Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- int main() {
- vector<int> v(5);
- // Это "range-based for". Переменная слева от двоеточия принимает
- // последовательно все значения из диапазона справа от двоеточия.
- // В данном случае x имеет тип ссылки, потому что я хочу менять значения
- // элементов внутри v, к которым через эту ссылку обращаюсь.
- for (int& x : v) {
- x = 7;
- }
- // Все пять элементов теперь равны 7.
- // Если не использовать ссылку, то будет копирование значения.
- for (int x : v) {
- cout << x << ' ';
- }
- cout << endl;
- // Можно использовать константную ссылку, чтобы копирования не было.
- // Правила такие же, как при передачи аргумента в функцию
- for (const int& x : v) {
- cout << x << ' ';
- }
- cout << endl;
- // А вот пример того, что невозможно сделать с range-based for:
- for (int i = 0; i < v.size(); ++i) {
- v[i] = i + 7;
- }
- // Здесь нам нужен индекс i для вычислений, а range-based for
- // не знает индекс элемента, с которым работает в своём теле.
- // Можно пройтись таким же образом по символам строки.
- string s = "Hello";
- for (const char& c : s) {
- cout << c << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement