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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.69
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
#1

STL vector,list - C++

29.06.2009, 17:04. Просмотров 6766. Ответов 2
Метки нет (Все метки)

У меня 2 вопроса:
1) можете рассказать,как подробно работает reverse_iterator?Создал вектор,хочу его распечатать в обратном порядке следования индексов,а он мне вообще то ошибку выдает,что я вышел за пределы массива,то печатает не в обратном порядке.
В литературе как работает подробно reverse_iterator не нашел,везде просто написано,что такой итератор. Смотрел "STL для программистов на C++ (Аммерааль)","C++ Стандартная библиотека. Для профессионалов (Джосьютис)" и Страуструпа.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    std::vector<int> arr;
    arr.push_back(1);
    arr.push_back(2);
    arr.push_back(3);
    arr.push_back(4);
    arr.push_back(5);
    arr.push_back(6);
    arr.push_back(7);
    arr.push_back(8);
    arr.push_back(9);
    arr.push_back(10);
    arr.push_back(1);
 
    for(std::vector<int>::reverse_iterator i = arr.rbegin(); i!=arr.rend(); ++i)
        std::cout << arr[(*i)] << std::endl;
2) Вот класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class LongDigit: public std::list<int>
{
public:
    LongDigit()  {}
    ~LongDigit() {}
    friend std::istream& operator>>(std::istream & in, const LongDigit & dig);
    friend std::ostream& operator<<(std::ostream & out, const LongDigit & dig);
 
    // addition
    LongDigit operator+(const LongDigit & longDig);
 
 
private:
    std::list<int> list_;
};
И интерфейс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
///////////////////////////////////////////////////////////////////////////////
LongDigit LongDigit::operator+(const LongDigit & longDig) 
{
    unsigned int position1 = longDig.list_.size(),position2 = list_.size();
    std::list<int>::reverse_iterator i;
 
    if(position1 > position2)
        for(i = longDig.list_.rbegin(); i < longDig.list_.rend(); ++i)
        {
                          // do smth
        }
    else {
        for(i = longDig.list_.rbegin(); i < longDig.list_.rend(); ++i)
        {
                         // do smth
        }
    }
    return temp;
 
}
Выдает ошибку:
Error 2 error C2664: 'std::_Revranit<_RanIt,_Base>::_Revranit(_RanIt)' : cannot convert parameter 1 from 'std::list<_Ty>::_Const_iterator<_Secure_validation>' to 'std::list<_Ty>::_Iterator<_Secure_validation>' c:\program files\microsoft visual studio 9.0\vc\include\xutility 2125

Не пойму почему... Иногда туплю и очевидные ошибки не нахожу.Сначала у меня был здесь вектор,потом поменял на list.Но все равно ошибка осталась,даже когда наследовал от list класс,все равно не помогло избежать ошибки.Подскажите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2009, 17:04     STL vector,list
Посмотрите здесь:

Задача по контейнерам stl vector и list - C++
Дан сортированный по убыванию массив int'ов размером 100 элементов. Значение начального максимального элемента a, минимального b. На вход...

Работа с STL. Поменять vector на list - C++
Программа должна быть написана так, чтобы достаточно было заменить в одном месте vector на list и приложение делало все то же самое. Если...

vector STL - C++
class data { public: char path; char net; char metric; int number; // для укаания строки таблици }; class vertex

Работа с STL vector - C++
Добрый день! Прошу объяснить следующие моменты связанные с &lt;vector&gt; (почему ругается студия, откуда берутся такие результаты) и дать...

STL vector iterator - C++
есть список в списке... ..точнее: vector &lt;Class1*&gt; mapClass1; а уже в Class1 определён вектор vector &lt;Class2*&gt; mapClass2; ...

Stl vector, не резервирует память - C++
vector не резервирует память и не вставляет элемент std::vector&lt;int&gt; myVector; myVector.reserve(10); ...

STL vector запись в файл - C++
Здраствуйте! Такая проблема, есть у меня например vector чисел 1,2,3,4,5 надо записать их в файл. Если записываю так, то выбивает ошибка...

STL обращение к элементу vector - C++
Помогите исправить ошибку. #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class otschet { public: double...

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

Обработка STL контейнера vector - C++
Текст дан в виде вектора. Отсортировать элементы этого вектора и превратить на два списка так, чтобы в первом были только те элементы,...

vector и функция read() из STL - C++
Привет всем, мой первый вопрос на этом форуме... Вот: Пишу программу &quot;Список сотрудников&quot;, в которой использую vector из библиотеки...

STL vector превратить в stack - C++
Всем привет! немогли бы вы помочь с таким заданием по STL :) Построить вектор &quot;колода карт&quot;. превратить вектор в стэк, прежде...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
29.06.2009, 18:04     STL vector,list #2
Итератор, грубо говоря, является указателем на элемент вектора (а не значением индекса), т.е. если Вам нужно обратиться к элементу, на который он указывает, нужно просто его разименовать, т.е. *i без всяких arr[(*i)].
C++
1
2
for(std::vector<int>::reverse_iterator i = arr.rbegin(); i!=arr.rend(); ++i)
  std::cout << *i << std::endl;
reverse_iterator по сути является обычным итератором, просто операции инкремента и ему подобные сдвигают итератор не на следующий элемент, а на предыдущий, а декремента - на следующий.
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
29.06.2009, 20:37  [ТС]     STL vector,list #3
все,спасибо,разобрался

Добавлено через 20 минут 26 секунд
2 ошибку нашел сам
Ответ Создать тему
Опции темы

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