Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
#1

Про list push_back

15.01.2015, 17:50. Просмотров 897. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
list <int> temp;
temp.push_back(3);
temp.push_back(2);
temp.push_back(1);
 
list <int>::iterator iter = temp.begin();
 
for(int i=0; i<temp.size(); i++)
{
prinf("%d\n", *iter+i);
}
распечатывает содержимое контейнера
3
4
5
почему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2015, 17:50
Ответы с готовыми решениями:

list.push_back ошибка!
Только начинаю писать на C++. Помогите пожалуйста разобраться в ламерской...

Почему не компилируется list.push_back( double[3] ) ?
А почему компилятор отказывается добавлять в список массив? ...

Push_back
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;iterator&gt; #include...

Push_back(1.)
Доброго времени суток, уважаемые форумчане! Ковыряя чужой код, наткнулся на...

Push_back и emplace_back
Всем привет. Может кто нибудь подсказать для чего в STL контейнерах...

4
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 31
15.01.2015, 17:56 #2
Цитата Сообщение от mhg Посмотреть сообщение
*iter
Вы разименовали итератор, в итоге работаете уже не с указателем, а со значением первого элемента. То есть - с тройкой.
И в каждом цикле прибавляете к тройке i.
Потому и получается (3 + 0)3, (3 + 1)4, (3 + 2)5.
0
mss307
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
15.01.2015, 17:57 #3
C++
1
2
3
4
5
6
7
8
9
10
11
    std::list <int> temp;
    temp.push_back(3);
    temp.push_back(2);
    temp.push_back(1);
 
    std::list <int>::iterator iter = temp.begin();
 
    for(iter; iter != temp.end(); ++iter)
    {
        std::cout << *iter;
    }
потому что на каждом шаге цикла добавляется i (0, 1, 2).
0
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 31
15.01.2015, 18:03 #4
А если хотите вывести элементы, то итератор нужно инкрементить.
C++
1
2
3
4
5
    for(int i=0; i<temp.size(); i++)
    {
        std::cout << *iter << "\n";
        iter++;
    }
Добавлено через 5 минут
Или уже ж так.
C++
1
2
3
4
    for(list <int>::iterator iter = temp.begin(); iter != temp.end(); iter++)
    {
        std::cout << *iter << "\n";
    }
0
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
15.01.2015, 22:41  [ТС] #5
Всем спасибо!
0
15.01.2015, 22:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2015, 22:41

Push_back и стандарт С++
vector&lt;int&gt; vA; vA.push_back(s); В случае, если в vA нет свободного места,...

Vector . push_back
Доброго времени суток! Помогите пожалуйста поправить код!! #include...

push_back vs emplace_back
собственно тема обсуждалась там, я сделал вывод, что надо использовать...


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

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

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