Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Доступ к определённому элементу вектора


Автор: Rutti 20.11.2006, 17:50
через for() и итератор можно получить доступ к каждому элементу вектора последовательно. А как получить значение определённого элемента? Скажем, третьего?

Автор: Partizan 20.11.2006, 17:58
vector::at

Returns a reference to the element at a specified location in the vector.

Автор: Void 20.11.2006, 17:58
Код

vector<int> v(10);
v[1] = 3;

Автор: Rutti 20.11.2006, 22:55
А почему тогда если обьявленой int-переменной через cin присвоить значение, которое потом использовать в качестве индекса для вектора, вылетает ошибка? А если в качестве индекса использовать просто число, то всё проКатывает?

Автор: Partizan 20.11.2006, 23:13
может фишка в том что значение недопустимое присваивается?

Автор: Rutti 20.11.2006, 23:48
Это как? Больше размера вектора? Да вроде всё правильно делаю: 
Код

vectore<string> name;
. 
. 
. 

int i;
cin>>i; 
cout<<name[i];

Автор: Daevaorn 20.11.2006, 23:50
Цитата(Rutti @  21.11.2006,  00:48 Найти цитируемый пост)
Это как? Больше размера вектора? Да вроде всё правильно делаю: 

Не правильно. Вектору надо указать размер:
Код

name.resize( 10 ); // вектор состоит из 10 элементов

Автор: Xenon 21.11.2006, 00:07
Rutti, у тебя в примере вектор пустой, а ты от него требуешь чего-то smile

Автор: Rutti 21.11.2006, 00:38
А если это не возможно? Если я принимаю вектор не зная его размера? Или получить вектор, вычислить его размер и этим числом указать размер нового вектора, куда скопировать и первый вектор?

Автор: Daevaorn 21.11.2006, 00:41
Цитата(Rutti @  21.11.2006,  01:38 Найти цитируемый пост)
А если это не возможно? Если я принимаю вектор не зная его размера? Или получить вектор, вычислить его размер и этим числом указать размер нового вектора, куда скопировать и первый вектор? 

Вектор может изменять свой размер динамически как в большую сторону так и в меньшую (с некоторыми оговорками). Для этого у него есть метод resize.

Автор: archimed7592 21.11.2006, 00:58
а узнать размер вектора можно методом size () smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)