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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2010, 17:24   #1
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию binary_search поиск нужного элемента.

Есть контейнер: vector< pair<string, int> > ghost;

Нужно убедиться в существовании пары, первый элемент которой совпадает с эталоном.

Можно-ли с помощью binary_search() это замутить? Непонятно каким должен быть последний аргумент в этом алгоритме.
the_deer_one вне форума Ответить с цитированием
Старый 30.08.2010, 17:31   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Для такого поиска элементы должны быть отсортированы по твоему критерию.
Carbon вне форума Ответить с цитированием
Старый 30.08.2010, 17:41   #3
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

С сортировкой проблем почему-то нет.

Код:
vector< pair<string, int> > ghost;
ghost.push_back(pair<string, int>("A", 1));
ghost.push_back(pair<string, int>("D", 1));
ghost.push_back(pair<string, int>("C", 1));
ghost.push_back(pair<string, int>("B", 1));
sort(ghost.begin(), ghost.end() );
А вот попытка поискать обламывается:
Код:
	if( binary_search(ghost.begin(), ghost.end(), "D") )
	{}
the_deer_one вне форума Ответить с цитированием
Старый 30.08.2010, 17:57   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Код:
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

bool compare(
	const pair<string, int> & a,
	const pair<string, int> & b
	)
{
	return a.first < b.first;
}

int main(int, char **)
{
	vector< pair<string, int> > ghost;
	ghost.push_back(pair<string, int>("A", 1));
	ghost.push_back(pair<string, int>("D", 1));
	ghost.push_back(pair<string, int>("C", 1));
	ghost.push_back(pair<string, int>("B", 1));
	sort(ghost.begin(), ghost.end(), compare);

	for (int i = 0, size = ghost.size(); i < size; ++i)
		cout << ghost[i].first << endl;

	cout << binary_search(ghost.begin(), ghost.end(), pair<string, int>("D", 0), compare) << endl;

	return 0;
}
Carbon вне форума Ответить с цитированием
Старый 30.08.2010, 19:51   #5
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Ох чёрт. В жисть бы не догадался, что учитывается только самый первый элемент. 0_0 А если к примеру мне нужно убедиться в существовании пары, у которой второй элемент совпадает с эталоном. Тут уж алгоритм неосилит?
the_deer_one вне форума Ответить с цитированием
Старый 30.08.2010, 20:08   #6
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от the_deer_one Посмотреть сообщение
А если к примеру мне нужно убедиться в существовании пары, у которой второй элемент совпадает с эталоном. Тут уж алгоритм неосилит?
Код:
bool compare(
	const pair<string, int> & a,
	const pair<string, int> & b
	)
{
	return a.second < b.second;
}
Carbon вне форума Ответить с цитированием
Старый 30.08.2010, 20:22   #7
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Сколько чудесных открытий. Я думал функция сравнения, передаваемая в алгоритм, служит для предсортировки контейнера перед поиском. :stupid:
the_deer_one вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и вывод нужного изображения в Excel 2007, VBA Stlline Microsoft Office Excel 5 11.08.2010 09:09
Поиск нужного курсора BarakudaX777 Мультимедиа в Delphi 15 15.06.2010 19:17
Как сделать поиск нужного слова в TextBox 3dgraph Общие вопросы .NET 2 30.06.2009 10:55
Поиск элемента ЭД4-0014 Помощь студентам 12 05.06.2008 21:47
задача Делфи - поиск нужного и замена Katovski Помощь студентам 8 30.05.2008 21:28