Форум программистов, компьютерный форум CyberForum.ru

Метод STL size и инициализация списка - C++

Восстановить пароль Регистрация
 
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
13.08.2013, 22:56     Метод STL size и инициализация списка #1
Всем доброго вечера! Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <fstream> // для потоковых файловых функций
#include <typeinfo> // для typeid()
using namespace std;
#include <process.h> // для exit()
#include <iostream>
#include <string>
#include <algorithm>
#include <list>
 
 
void main()
{
   setlocale( LC_ALL,"Russian" );
 
 
 
   float  arr[] = { 35, 76, 8, 145, 6, 9, 79, 34 };
   list<int> ilist(arr,arr+8);
   list<int>::iterator iter1;
   list<int>::iterator iter2;
   iter1=ilist.begin();
   iter2=ilist.end();
 
   int size=ilist.size();
   cout<<" ilist.size() - "<<ilist.size()<<" size - "<<size<<' '<<endl; 
 
   for(int i=0; i < ilist.size(); i++)
   {
       cout<<ilist.front()<<' ';
       ilist.pop_front();
   }
 
   cout<<endl;
   system("pause");
}
А вот результатМетод STL size и инициализация списка проблема в том что выводится половина списка
Проблема решается двумя путями инициализацию списка можно провести вместо list<int> ilist(arr,arr+8) написать list<int> ilist(arr,arr+16) или же в цикле for условие i < ilist.size() изменить на i < size или i < 8 хотя метод ilist.size() и так возвращает 8. Что за колдовство подскажите ?!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
13.08.2013, 23:14  [ТС]     Метод STL size и инициализация списка #2
Тема закрыта ) по невнимательности объявил список типа int, а инициализировал типом float.
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,960
13.08.2013, 23:16     Метод STL size и инициализация списка #3
И что, помогает? На самом-то деле ведь проблема в том, что в процессе итераций цикла размер списка постоянно уменьшается. И как раз на середине списка текущий индекс и размер списка оказываются равными.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.08.2013, 23:19     Метод STL size и инициализация списка #4
Цитата Сообщение от ArkTaS Посмотреть сообщение
Тема закрыта ) по невнимательности объявил список типа int, а инициализировал типом float.
Дело разве в этом?
C++
1
ilist.pop_front();
Рамер списка в цикле уменьшается.
C++
1
2
3
4
5
for(int i = 0; iter1 != iter2; i++)
{
       cout << *iter1 << ' ';
       ++iter1;
}
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,960
13.08.2013, 23:19     Метод STL size и инициализация списка #5
Функция size() вызывается перед каждой итерацией. И только перед первой она возвращает 8, а с каждым следующим вызовом на 1 меньше.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
13.08.2013, 23:19     Метод STL size и инициализация списка #6
Нет, проблема в том что ты в каждой итерации удаляешь элемент списка: ilist.pop_front();
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
13.08.2013, 23:20  [ТС]     Метод STL size и инициализация списка #7
Ахахх... люблю поспешить, грешен ) Вы правы, дело было не в том ) Я думаю все здесь собравшиеся знают STL так что будьте любезны, посоветуйте пожалуйста книгу для начинающего по STL и если есть, будет замечательно иметь ее пдф вариант
Рекомендации по литературе в разделе этого форума смотрел подходящего варианта там не нашел
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
13.08.2013, 23:33     Метод STL size и инициализация списка #8
Зачем тебе книга по STL? Купи англо-русский словарь) http://www.cplusplus.com/reference/stl/
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.08.2013, 00:14     Метод STL size и инициализация списка #9
Цитата Сообщение от ArkTaS Посмотреть сообщение
Рекомендации по литературе в разделе этого форума смотрел подходящего варианта там не нашел
и чем неподходят предложенные там варианты?
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
14.08.2013, 00:21  [ТС]     Метод STL size и инициализация списка #10
Цитата Сообщение от castaway Посмотреть сообщение
Зачем тебе книга по STL? Купи англо-русский словарь) http://www.cplusplus.com/reference/stl/
Думаю и в правду стоит начинать пользоваться англоязычной справкой )все равно рано или поздно придется, а лучше рано - время сэкономлю !
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,960
14.08.2013, 00:28     Метод STL size и инициализация списка #11
Английский — дело хорошее. И справка англоязычная очень полезна. Но в справке всё слишком уж сухо и кратко. На форуме есть английский электронный вариант второго издания "N. Josuttis. The C++ Standard Library" Хотя непонятно, чем не устраивает, к примеру, его переводное первое издание. Пусть даже оно несколько устарело.
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
14.08.2013, 00:28  [ТС]     Метод STL size и инициализация списка #12
Цитата Сообщение от Jupiter Посмотреть сообщение
и чем неподходят предложенные там варианты?
Скачивал "Стандартная библиотека C++ " в djvu, так как посчитал ее подходящим для новичка. Жаль что в пдф нет, так как нужно тестить код в примерах. Ну а переписывать в ручную с джву формата это плохая затея.
Jupiter
14.08.2013, 00:38
  #13

Не по теме:

Цитата Сообщение от ArkTaS Посмотреть сообщение
Скачивал "Стандартная библиотека C++ " в djvu, так как посчитал ее подходящим для новичка. Жаль что в пдф нет, так как нужно тестить код в примерах. Ну а переписывать в ручную с джву формата это плохая затея.
ах вот оно что...ну да....это проблема...надеюсь это не в школе вас научили copy-paste?
трудно представить себе первоклашек которые из букваря будут copy-paste делать

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2013, 00:46     Метод STL size и инициализация списка
Еще ссылки по теме:

C++ Удаление елемента списка с использованием итератора. STL
C++ stl::vector, метод pop_back()
Реализация STL-совместимого списка C++

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

Или воспользуйтесь поиском по форуму:
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
14.08.2013, 00:46  [ТС]     Метод STL size и инициализация списка #14
Цитата Сообщение от Jupiter Посмотреть сообщение

Не по теме:


ах вот оно что...ну да....это проблема...надеюсь это не в школе вас научили copy-paste?
трудно представить себе первоклашек которые из букваря будут copy-paste делать

Добавлю что это еще жутко не удобно сужать среду до половины экрана и то же самое делать с книгой...Но в основном это время затрачиваемое на ненужную работу. Более продолжать обсуждать это я не собираюсь.
Yandex
Объявления
14.08.2013, 00:46     Метод STL size и инициализация списка
Ответ Создать тему
Опции темы

Текущее время: 01:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru