Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
i7otep9wka
1 / 1 / 1
Регистрация: 13.12.2011
Сообщений: 81
#1

Range-based for - C++

27.04.2014, 15:46. Просмотров 346. Ответов 2
Метки нет (Все метки)

Пример кода:
C++
1
2
3
4
5
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}
Возникли вопросы:
1. "х" является итератором?
2. Для чего мы записывает "2" по адресу, который лежит в х?
Так мы сделать не можем?
C++
1
2
3
4
5
6
int my_array[5] = {1, 2, 3, 4, 5};
for(int x : my_array)
{
  x = 2;
 
}
3. Обращаюсь ли я к следующему элементу коллекции таким образом :
C++
1
2
3
4
5
6
7
8
int my_array[5] = {1, 2, 3, 4, 5};
for(int x : my_array)
{
  x = 2;
  if (x+1==0){
  ..
 }
}
?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2014, 15:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Range-based for (C++):

Range-based for - C++
Почему не работает данный цикл с динамически выделенным массивом? Подозреваю, что из-за фрагментированности кучи... но адресная...

Range-based for - C++
Дана конструкция вида for(auto a:some_func()). Гарантирует ли стандарт что some_func будет вызвано один раз или это зависит от компилятора?

range-based for не работает - C++
#include <iostream> #include <vector> int main() { std::vector<int> v(30); for (auto z : v) { std::cout<<z<<std::endl; ...

загадки range-based - C++
если поставить auto &it - будет тоже самое - почему?// initializer_list::begin/end #include <iostream> // std::cout #include...

A range-based for statement - C++
я вот чё то не понимаю - когда вызываем оператор delete для указателя на массив, он каким то образом узнаёт его размер и всё грамотно...

Непонятки с range-based for! - C++
Доброе время суток! Запутался с range-based циклами! Вообщем код inline string ChecTypeFiles(std::string const & Names) { ...

2
Komi
6 / 6 / 2
Регистрация: 10.08.2012
Сообщений: 82
27.04.2014, 15:53 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
x *=  2
это не адресс, это тоже самое что
C++
1
x = x*2
только короче.
1
Nick Alte
Эксперт С++
1646 / 1018 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
27.04.2014, 16:11 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от i7otep9wka Посмотреть сообщение
1. "х" является итератором?
Нет, он является ссылкой на элемент массива (то, на что ссылается итератор).

Добавлено через 1 минуту
Цитата Сообщение от i7otep9wka Посмотреть сообщение
Обращаюсь ли я к следующему элементу коллекции таким образом
Нет, это операция с текущим элементом массива. В общем случае другие элементы внутри range-based for недоступны.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 16:11
Привет! Вот еще темы с ответами:

Range-based for trouble - C++
Доброго времени суток, уважаемые форумчане! У меня возникла небольшая проблема с данной штукой. Почему такой вариант работает, int...

Range-Based for для определённого диапазона - C++
Добрый вечер, мои хорошие! Вопросик такой... Не знаю простой или нет, но ответа не нашла. Хочу использовать ауто для прохода по...

Передача массива в функцию и range-based цикл - C++
Весь мозг поломал, перечитал все об указателях и так и не понял как сделать этот код работоспособным. Как прямо сказать циклу что я ему...

Как определить индекс элемента в range-based for цикле? - C++
Вопрос, вот есть у меня простейший Range-based цикл int arr = { 9, 7, 1 }; for (auto i: arr) std::cout << "i" << "\n"; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru