std::vector<T> v;
...
for(size_t i = 0; i < v.size(); ++i)
{
if(v == valueToFind)
{
//Делаем что-нибудь
}
}
Функция, обратная at()
at() осуществляет доступ у элементу по индексу. А есть функция, которая возвращает индекс(ы) известного элемента?
Алгоритм find? (его "семантика")
Что-то я не понял как через find найти номер позиции в векторе...
Цитата: k3Eahn
Алгоритм find? (его "семантика")
Ага, только он возвращает позицию первого найденного элемента. Если нужны все, то его вызываем в цикле, либо count() раз (алгоритм, считающий кол-во заданных (в простейшем случае) элементов), либо пока возвращает не end() (что значит, что элемент был найден).
Он возвращает итератор этого элемента. Вычтя их него vector.begin() - итератор, получишь индекс.
Угу. Просто автора интересовала именно функция поиска, я и назвал такую функцию. Хотя можно сделать это простым перебором, не прибегая к помощи функции.
Цитата: k3Eahn
Zorkus
Угу. Просто автора интересовала именно функция поиска, я и назвал такую функцию. Хотя можно сделать это простым перебором, не прибегая к помощи функции.
Угу. Просто автора интересовала именно функция поиска, я и назвал такую функцию. Хотя можно сделать это простым перебором, не прибегая к помощи функции.
А как, по-твоему, работает функция find?;)
Опять же стандартные алгоритмы оперируют итераторами, а автору видимо удобнее работать с вектором используя индексы (хотя в векторе итераторы есть непосредственно указатели на элементы, т.е итератор по сути есть тайпдеф на T*, где T тип элемента контейнера).
Код:
А автору настоятельно рекомендую переходить к использованию итераторов, без них в STL делать нечего.