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

STL find - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.10.2012, 02:04     STL find #1
deleted
нашел
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 02:04     STL find
Посмотрите здесь:

оператор find в stl C++
Организовать find в векторе через STL!!! C++
C++ find() from string!
C++ STL. Алгоритм find(). Игнорировать регистр
C++ STL алгоритм find, найти элементы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.10.2012, 02:08     STL find #2
std::find

Добавлено через 16 секунд
из <algorithm>
Marina_P
8 / 8 / 0
Регистрация: 11.02.2013
Сообщений: 67
11.02.2013, 22:40     STL find #3
Допустим у меня есть вектор х,итератор i и число а.Через find я хочу найти позицию элемента а в векторе
i=find(x.begin(),x.end(),a)
Помогите,пожалуйста!
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
11.02.2013, 23:00     STL find #4
i-x.begin()
Marina_P
8 / 8 / 0
Регистрация: 11.02.2013
Сообщений: 67
11.02.2013, 23:09     STL find #5
спасибо за ответ,то в том то и дело, что не получается.Оператор find возвращает значение а,а мне нужен номер позиции в векторе.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
11.02.2013, 23:10     STL find #6
Он возвращает итератор а не значение или индекс...

В STL все практически через итераторы делается, а не индексы...
Marina_P
8 / 8 / 0
Регистрация: 11.02.2013
Сообщений: 67
11.02.2013, 23:15     STL find #7
А как же мне в таком случае узнать номер позиции?Какой алгоритм применить?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
11.02.2013, 23:19     STL find #8
Зачем ?

Добавлено через 2 минуты
C++
1
2
3
4
std::vector<some_type>::iterator it=find(x.begin(),x.end(),a);
int index= std::distance(x.begin(),  it );  // почти тоже самое что и it-x.begin() 
 
std::cout<< x[index] <<std::endl; // выводим  a
Marina_P
8 / 8 / 0
Регистрация: 11.02.2013
Сообщений: 67
11.02.2013, 23:20     STL find #9
Мне нужно работать с элементами,которые находятся в векторе за элементом а.Я думала,что через find я найду номер позиции,но не получается.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
11.02.2013, 23:21     STL find #10
Ну так работайте с ними через итератор.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
11.02.2013, 23:25     STL find #11
чем такой вариант не устраивает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <random>
#include <ctime>
 
int main ()
{
    auto rnd = std::bind(std::uniform_int_distribution <> (-10, 10),
                         std::mt19937 (time(nullptr)));
    int vectSize = 25;
    std::vector <int> vect (vectSize);
    std::generate(vect.begin(), vect.end(), rnd);
    std::copy(vect.begin(), vect.end(), std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    int num;
    std::cin >> num;
    auto pos = (std::find(vect.begin(), vect.end(), num) - vect.begin()) + 1;
    std::cout << pos;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 23:25     STL find
Еще ссылки по теме:

STL.Find() C++
C++ Find() для поиска элемента в поле класса / STL
Cannot find -lbgi C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
11.02.2013, 23:25     STL find #12
К примеру
C++
1
2
3
std::vector<int>::iterator it=find(x.begin(),x.end(),a);
 
 for(; it!=x.end() ; ++it)  *it= 5;  // присваиваем  всем элементам за "а" и самому "а"  значение "5"
Yandex
Объявления
11.02.2013, 23:25     STL find
Ответ Создать тему
Опции темы

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