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

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

Войти
Регистрация
Восстановить пароль
 
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
#1

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

13.08.2013, 22:56. Просмотров 748. Ответов 13
Метки нет (Все метки)

Всем доброго вечера! Вот код
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. Что за колдовство подскажите ?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2013, 22:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод STL size и инициализация списка (C++):

Заполнить квадратную матрицу змейкой по диагонали, начиная с элемента matrix[size-1][size-1] - C++
Требуется написать программу, которая заполняет массив размерности n*n по заданному правилу: 25 23 22 16 15 24 ...

Stl переворачивание списка - C++
Пишу программу для переворачивания списка: #include &lt;iostream&gt; #include &lt;list&gt; #include &lt;algorithm&gt; using namespace std; ...

Сортировка списка (STL) - C++
Здравствуйте, я столкнулся с проблемой: Мне нужно отсортировать обьекты. Обьекты есть елементами списка. Список задается как лист. ...

Реализация STL-совместимого списка - C++
Как известно (курим Мейерса), в STL для класса list обычно выбирается O(1) время работы метода splice, а метод size() имеет линейную...

Метод remove_if STL - C++
Всем привет! Не могу понять почему вылезает ошибка при использовании remove_if для list. ошибка Error 1 error C3867:...

Удаление элемента списка list.STL - C++
Всем привет! Ребята, не могу понять почему у меня не получается удалить конкретный элемент списка. Вот код void WriteClientinFile(...

13
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
13.08.2013, 23:14  [ТС] #2
Тема закрыта ) по невнимательности объявил список типа int, а инициализировал типом float.
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
13.08.2013, 23:16 #3
И что, помогает? На самом-то деле ведь проблема в том, что в процессе итераций цикла размер списка постоянно уменьшается. И как раз на середине списка текущий индекс и размер списка оказываются равными.
1
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.08.2013, 23:19 #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;
}
1
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
13.08.2013, 23:19 #5
Функция size() вызывается перед каждой итерацией. И только перед первой она возвращает 8, а с каждым следующим вызовом на 1 меньше.
1
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
13.08.2013, 23:19 #6
Нет, проблема в том что ты в каждой итерации удаляешь элемент списка: ilist.pop_front();
1
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
13.08.2013, 23:20  [ТС] #7
Ахахх... люблю поспешить, грешен ) Вы правы, дело было не в том ) Я думаю все здесь собравшиеся знают STL так что будьте любезны, посоветуйте пожалуйста книгу для начинающего по STL и если есть, будет замечательно иметь ее пдф вариант
Рекомендации по литературе в разделе этого форума смотрел подходящего варианта там не нашел
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
13.08.2013, 23:33 #8
Зачем тебе книга по STL? Купи англо-русский словарь) http://www.cplusplus.com/reference/stl/
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.08.2013, 00:14 #9
Цитата Сообщение от ArkTaS Посмотреть сообщение
Рекомендации по литературе в разделе этого форума смотрел подходящего варианта там не нашел
и чем неподходят предложенные там варианты?
0
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
14.08.2013, 00:21  [ТС] #10
Цитата Сообщение от castaway Посмотреть сообщение
Зачем тебе книга по STL? Купи англо-русский словарь) http://www.cplusplus.com/reference/stl/
Думаю и в правду стоит начинать пользоваться англоязычной справкой )все равно рано или поздно придется, а лучше рано - время сэкономлю !
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
14.08.2013, 00:28 #11
Английский — дело хорошее. И справка англоязычная очень полезна. Но в справке всё слишком уж сухо и кратко. На форуме есть английский электронный вариант второго издания "N. Josuttis. The C++ Standard Library" Хотя непонятно, чем не устраивает, к примеру, его переводное первое издание. Пусть даже оно несколько устарело.
0
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
14.08.2013, 00:28  [ТС] #12
Цитата Сообщение от Jupiter Посмотреть сообщение
и чем неподходят предложенные там варианты?
Скачивал "Стандартная библиотека C++ " в djvu, так как посчитал ее подходящим для новичка. Жаль что в пдф нет, так как нужно тестить код в примерах. Ну а переписывать в ручную с джву формата это плохая затея.
0
Jupiter
14.08.2013, 00:38
  #13

Не по теме:

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

0
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
14.08.2013, 00:46  [ТС] #14
Цитата Сообщение от Jupiter Посмотреть сообщение

Не по теме:


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

Добавлю что это еще жутко не удобно сужать среду до половины экрана и то же самое делать с книгой...Но в основном это время затрачиваемое на ненужную работу. Более продолжать обсуждать это я не собираюсь.
0
14.08.2013, 00:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2013, 00:46
Привет! Вот еще темы с ответами:

stl::vector, метод pop_back() - C++
Доброго времени суток! Вот такой вопрос: я создаю объект в куче: someClass *test = new someClass();

Реализовать двунаправленный список в духе списка из STL - C++
Все-таки видимо у меня всегда останутся с этим проблемы. Само определение скидывать не буду, я пытаюсь сделать, что-то вроде STL-ного...

Удаление елемента списка с использованием итератора. STL - C++
Надо удалить из списка елементы, значение которых входит в некий диапазон. Я хочу использовать для етого итератор(если такое вообще...

метод erase для list(STL) - C++
Всем привет! Не могу понять в чем у меня ошибка. Применяю метод erase в цикле для list, и с помощью него удаляю нужный элемент, но...


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

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

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