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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2011, 12:27   #1
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию Оператор как предикат

В алгоритме find_first_of требуется предикат на сравнение, есть ли возможность передать туда оператор ==? Если что - сравниваются два объекта типа char.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 19.07.2011, 12:30   #2
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Ну да, попробуй передать operator==.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 19.07.2011, 12:34   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Используйте версию алгоритма без предиката. Она такая тоже есть.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 19.07.2011 в 12:35. Причина: Перепутал char с char*
Гром вне форума Ответить с цитированием
Старый 19.07.2011, 12:34   #4
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Obey-Kun, дак пробовал же, не принимает. Сразу появляется множество похожих ошибок, приведу две из них:
Цитата:
error C2896: '_FwdIt1 std::find_first_of(_FwdIt1,_FwdIt1, _FwdIt2,_FwdIt2,_Pr)' : cannot use function template 'bool std::operator ==(const std::list<_Ty,_Ax> &,const std::list<_Ty,_Ax> &)' as a function argument
1> d:\program files\microsoft visual studio 10.0\vc\include\list(1571) : see declaration of 'std::operator =='
Цитата:
error C2896: '_FwdIt1 std::find_first_of(_FwdIt1,_FwdIt1, _FwdIt2,_FwdIt2,_Pr)' : cannot use function template 'bool std::operator ==(const std::vector<_Ty,_Ax> &,const std::vector<_Ty,_Ax> &)' as a function argument
1> d:\program files\microsoft visual studio 10.0\vc\include\vector(1485) : see declaration of 'std::operator =='
И так далее. Причем такой предикат:
Код:
bool CharEqual(char a, char b) 
{
	return a == b;
}
берет без проблем.

Гром, она называется по-другому как-то? И сравнивать нужно именно char, а не char* (то есть одиночный символ).
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 19.07.2011, 12:38   #5
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Ха-ха, IntelliSense ругается на версию без предиката, но запускается все отлично. Спасибо, Гром, без тебя бы не догадался.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 19.07.2011, 12:38   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Всё же интересно насчёт передачи оператора в качестве аргумента. Попробуй operator==<char, char>.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 19.07.2011, 12:42   #7
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
Попробуй operator==<char, char>.
Ошибка такая:
Цитата:
error C2914: 'std::find_first_of' : cannot deduce template argument as function argument is ambiguous
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 19.07.2011, 12:51   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Сtrl
код покажи
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 19.07.2011, 12:55   #9
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2Сtrl
код покажи
Код:
typedef vector<char > CharSet;
Код:
bool lexer::Token::IsMemberOfCharset(const CharSet *pCharSet)
{
	const string::const_iterator FirstSuitableSymFound = 
		find_first_of(
		TokValue.begin(), TokValue.end(),
		pCharSet->begin(), pCharSet->end()
		);
	return FirstSuitableSymFound != TokValue.end();
}
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 19.07.2011, 13:20   #10
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Сtrl
ну где тут твой предикат то?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оператор выбора или условный оператор[Перенесено из JavaSE] merhaba1992 Помощь студентам 1 20.01.2011 17:06
Условный оператор. Оператор выбора. Pascal Сержuk Помощь студентам 4 17.11.2010 12:50
Вычислить используя, оператор цикла for и оператор безусловного пе Knubbe Помощь студентам 1 18.12.2009 10:24
Как прописать условный оператор кликанья на кнопку? mauar Общие вопросы Delphi 30 01.06.2009 20:15