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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
#1

STL find - C++

28.10.2012, 02:04. Просмотров 1824. Ответов 11
Метки нет (Все метки)

deleted
нашел
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 02:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос STL find (C++):

оператор find в stl - C++
Допустим у меня есть такой код: #include <vector> #include <algorithm> #include <string> #include <windows.h> #include <iostream>...

STL алгоритм find, найти элементы - C++
Здраствуйте! У меня есть например массив vector<int> mas = {1,2,3,4,4,4,5,6}; Найти надо элемент 4, но find ищет только первый этот...

STL. Алгоритм find(). Игнорировать регистр - C++
Вся суть вопроса изложена в теме. Есть код, я помещаю в очередь с двусторонним доступом 9 слов, далее использую алгоритм find чтобы найти...

Организовать find в векторе через STL!!! - C++
Написал через вектор STL некий контейнер заполнил его данными. Написал сортировку и вывод всех значений через вспомогательные обьекты....

Find() для поиска элемента в поле класса / STL - C++
Есть какой то класс, к примеру: class Dog { public: Dog () {}; public: string Name; string Poroda; string Pol;

STL - C++
где можно почитать про STL очень подробно что бы исходные коды тоже были, какие структуры данных используются в реализации и тд тд тд ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gray_fox
What a waste!
1507 / 1210 / 68
Регистрация: 21.04.2012
Сообщений: 2,545
Завершенные тесты: 3
28.10.2012, 02:08 #2
std::find

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

В STL все практически через итераторы делается, а не индексы...
Marina_P
8 / 8 / 0
Регистрация: 11.02.2013
Сообщений: 67
11.02.2013, 23:15 #7
А как же мне в таком случае узнать номер позиции?Какой алгоритм применить?
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,558
Записей в блоге: 17
11.02.2013, 23:19 #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 #9
Мне нужно работать с элементами,которые находятся в векторе за элементом а.Я думала,что через find я найду номер позиции,но не получается.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,558
Записей в блоге: 17
11.02.2013, 23:21 #10
Ну так работайте с ними через итератор.
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
11.02.2013, 23:25 #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;
}
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,558
Записей в блоге: 17
11.02.2013, 23:25 #12
К примеру
C++
1
2
3
std::vector<int>::iterator it=find(x.begin(),x.end(),a);
 
 for(; it!=x.end() ; ++it)  *it= 5;  // присваиваем  всем элементам за "а" и самому "а"  значение "5"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 23:25
Привет! Вот еще темы с ответами:

STL - C++
Задача 2. Во входном файле in.txt расположена таблица, в каждой строке которой хранится &quot;владелец&quot;, &quot;домашнее животное&quot;, &quot;кличка&quot;....

STL - C++
Всем привет :) Задача следующая - Нужно считать из файла строки, запихнуть их в стек и вывести на экран, чтобы перед ними был номер...

STL в С++ - C++
Нужна помощь! Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые...

STL - C++
помогите сделать ввод ФИО и возраста через STL .Вот часть моего кода#include &lt;string&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.02.2013, 23:25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru