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

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

Войти
Регистрация
Восстановить пароль
 
newbie666
Заблокирован
#1

Как искать по std::vecotr из std::pait по одному значению из пары? - C++

10.09.2013, 16:14. Просмотров 459. Ответов 8
Метки нет (Все метки)

?

 Комментарий модератора 
Пункт 4.7 Правил: Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 16:14     Как искать по std::vecotr из std::pait по одному значению из пары?
Посмотрите здесь:

зачем часто писать std:: если можно один раз using namespace std? - C++
зачем часто писать std:: если можно один раз using namespace std?

Какая реализация лучше? std::pointer_to_binary_function vs std::function - C++
Какая реализация (set_p или set_f) лучше /современнее / эффективнее ? pointer_to_binary_function в С++11 объявлен как deprecated. Правильно...

В чем отличия между std::cref() и std::bind()? - C++
В документации не понял, что делает bind() ? И чем отличается cref() от операции взятия адреса? int x; int *y = &x; ...

Стоит ли очищать в деструкторе std::map , std::vecotor? - C++
У меня ещё один нубский вопрос :) Вот если в классе объявлены мапы и вектора, которые по ходу программы как то заполняются, нужно ли мне...

Стандартный поток и STL (std::copy to std::cout) - C++
#include <iostream> #include <sstream> #include <algorithm> #include <functional> #include <string> using namespace std; ...

Сортировка по одному из полей std::vector - C++
Подскажите пожалуйста! Задача: Имеется класс Person с полями: Family, Name, BirthDay, Sex, ExperienceTime (Фамилия, имя, дата...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
10.09.2013, 16:30     Как искать по std::vecotr из std::pait по одному значению из пары? #2
Функциональный объект напиши свой, либо собери его из bind, select и т.д.
newbie666
Заблокирован
10.09.2013, 16:33  [ТС]     Как искать по std::vecotr из std::pait по одному значению из пары? #3
ну вот например
C++
1
2
3
4
5
6
std::vector<std::wstring,int> vec;
 
...
 
int x = std::find(vec.begin(),vec.end(),
    [&](std::pair<std::wstring,int> a){return a.first == L"THIS_ONE";})->second;
Компилятор ругается и не хочет принимать условие a.first == L"THIS_ONE"; ... как написать ему, что я ищу элемент в векторе, в котором в паре первый элемент равен L"THIS_ONE" ?
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
10.09.2013, 16:33     Как искать по std::vecotr из std::pait по одному значению из пары? #4
Немного обманул: select1st, select2nd в стандарт не входят. Поэтому всё равно придётся что-то писать, чтобы извлечь элемент пары.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.09.2013, 16:34     Как искать по std::vecotr из std::pait по одному значению из пары? #5
http://www.cplusplus.com/reference/algorithm/find_if/
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
10.09.2013, 16:35     Как искать по std::vecotr из std::pait по одному значению из пары? #6
std::vector<std::wstring,int> vec;
Наверное, всё-таки вот так:
C++
1
std::vector<std::pair<std::wstring,int> > vec;
newbie666
Заблокирован
10.09.2013, 16:38  [ТС]     Как искать по std::vecotr из std::pait по одному значению из пары? #7
Цитата Сообщение от John Prick Посмотреть сообщение
std::vector<std:air<std::wstring,int> > vec;
да..в слепую по быстрому написал ))) но у меня парой нормально написано ))

Добавлено через 1 минуту
спасибо Тулосба ! ) find_if - то что надо... Но всё же интересно, как это сделать обычным файндом для моего унарного оператора как бы ... ?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.09.2013, 16:46     Как искать по std::vecotr из std::pait по одному значению из пары? #8
Цитата Сообщение от newbie666 Посмотреть сообщение
Но всё же интересно, как это сделать обычным файндом
std::find ищет совпадение значения. Если бы использовался свой класс, а не std::pair, можно было бы перегрузить оператор сравнения. Но это изврат.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2013, 16:59     Как искать по std::vecotr из std::pait по одному значению из пары?
Еще ссылки по теме:

Алгоритм std::find_end - аналог std::search_n - C++
Есть два семейства стандартных алгоритмов: std::search и std::find_end. Первое семейство предназначено для поиска первого совпадения...

Передача std::string по константной ссылке \ значению - C++
Суть вопроса: есть простенький словарь с std::vector в качестве приватного поля. struct StudentGrade { std::string name; char...

Std::function and std::vector - C++
Как положить обёртки в вектор? Не используя библиотеку boost. function&lt;void(int)&gt; first_func() = one(); function&lt;void(int)&gt;...

Как работает std::piecewise_construct? - C++
Здравствуйте! Мне необходимо содержать std::map с уникальными значениями, что-то вида: S get(std::string k) { static...


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

Или воспользуйтесь поиском по форуму:
gray_fox
10.09.2013, 16:59     Как искать по std::vecotr из std::pait по одному значению из пары?
  #9

Не по теме:

C bind то жутковато будет, вроде

C++
1
2
3
int x = std::find_if(
      vec.begin(), vec.end()
    , std::bind(std::equal_to<std::wstring>(), std::bind(&std::pair<std::wstring, int>::first, _1), L"THIS_ONE"))->second;

Yandex
Объявления
10.09.2013, 16:59     Как искать по std::vecotr из std::pait по одному значению из пары?
Ответ Создать тему
Опции темы

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