Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2011, 14:41   #1
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию Вопрос по std::vector

Я помещаю какой-то элемент в вектор с помощью push_back(). Как мне узнать его индекс? Использовать size() каким-то хаком выглядит, получше нет вариантов?
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 16.10.2011, 15:05   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Как мне узнать его индекс?
Конечно есть. Вектор это обычный динамический массив и доступ к нему производится так-же как и для одномерных массивов по индексу. Только, в отличии от массивов, для этого используется итератор произвольного доступа at.
Запись может выглядеть так: Vector.at(index).
Индексы начинаются с нуля, поэтому размер массива будет 0 - size-1.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 16.10.2011, 15:16   #3
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от Сtrl Посмотреть сообщение
Использовать size() каким-то хаком выглядит, получше нет вариантов?
а больше ничего нет, а зачем нужны другие методы? и зачем нужен индекс? итератор back() чем не устраивает?
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии

Последний раз редактировалось haruhi; 16.10.2011 в 15:18.
haruhi вне форума Ответить с цитированием
Старый 16.10.2011, 15:24   #4
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Smitt&Wesson, вы вопрос читали? Не нужно мне рассказывать, что такое вектор.
haruhi, итератор использовать не получится, поскольку последующий доступ будет осуществляться по индексу. Но раз других вариантов нет, буду использовать size(). Спасибо.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 16.10.2011, 15:41   #5
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Код:
std::distance( ... )
между начальным элементом (begin) и нужным элементом даст индекс элемента начиная с 0.
An1ka вне форума Ответить с цитированием
Старый 16.10.2011, 16:03   #6
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

An1ka, большое спасибо! Как раз то, что мне надо.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 16.10.2011, 16:50   #7
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

я ваще не понял что за шаманство
vector[size-1] чем не вариант?
это абсолютно нормально.

ну и ссылку на последний - vector::back() тоже чем не вариант.
onewho вне форума Ответить с цитированием
Старый 16.10.2011, 16:58   #8
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
я ваще не понял что за шаманство
vector[size-1] чем не вариант?
это абсолютно нормально.
Ничего нормального. Тупость полная.
Вас человек спрашивает , как узнать индекс элемента по его значению, а не как получить размер массива.
Например, вы запихали в вектор такие числа : 4 3 6 7 12 34.
И теперь как вы с помощью вашего size() определите в run-time индекс элемента 3? Никак. An1ka дал чёткий ответ, как это сделать.
_-Re@l-_ вне форума Ответить с цитированием
Старый 21.10.2011, 02:16   #9
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

при всём уважении
фраза
Цитата:
Я помещаю какой-то элемент в вектор с помощью push_back(). Как мне узнать его индекс? Использовать size() каким-то хаком выглядит, получше нет вариантов?
говорит мне только о том что человек хочет узнать индекс элемента который он только что запихал в контейнер.
onewho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38
Вопрос про vector и обычный массив certman Общие вопросы C/C++ 2 02.04.2010 23:38
Вопрос про vector функцию insert Dimedrolum Общие вопросы C/C++ 2 18.09.2009 22:51
std::vector ciaonataha Общие вопросы C/C++ 1 10.05.2009 15:50
Вопрос по <vector> kezman Общие вопросы C/C++ 1 13.08.2008 21:48