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

Работы в векторами. - C++

Восстановить пароль Регистрация
 
AKruglyak
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 24
09.03.2012, 13:56     Работы в векторами. #1
Читая в книге тему про вектора наткнулся на такой предложение:
"Также существует функция push_front() для занесения элементов в начале вектора, однако векторами она не поддерживается"
Поэтому при выполнении задания, которое требовало выведение строк в обратном порядке, я сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
 
int main(){
    vector<string> v;
    ifstream in("test.txt");
    string line;
    int count=0;
    while(getline(in, line)){
    v.push_back(line);
    count++;
    }
    
    for(count; count>0; count--)
    cout<<v[count];
    system("PAUSE");
    }
Программа компилируется, но при запуске крашится, не могу понять, в чем причина? И как использовать push_front()?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2012, 13:56     Работы в векторами.
Посмотрите здесь:

C++ Программа с векторами
C++ Операции с векторами и матрицами
Класс для работы с векторами. C++
Проблема с векторами. C++
Работа над векторами! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.03.2012, 14:07     Работы в векторами. #2
Цитата Сообщение от AKruglyak Посмотреть сообщение
for(count; count>0; count--)
* * cout<<v[count];
С нуля же отсчет идет.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.03.2012, 14:19     Работы в векторами. #3
ну да. либо исправить на cout << v[count - 1], либо перебирать от count-1 до нуля, либо использовать реверсивные итераторы
C++
1
2
for (std::vector<std::string>::reverse_iterator it = v.rbegin(), end = v.rend(); it != end; ++it)
 std::cout << *it << std::endl;
и еще вариант с алгоритмом copy и реверс итераторами.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
09.03.2012, 14:24     Работы в векторами. #4
Чтобы выявить ошибку можно воспользоваться методом
C++
1
vector::at
Цитата Сообщение от http://cplusplus.com/reference/stl/vector/at/
The difference between this member function and member operator function operator[] is that vector::at signals if the requested position is out of range by throwing an out_of_range exception.
Yandex
Объявления
09.03.2012, 14:24     Работы в векторами.
Ответ Создать тему
Опции темы

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