Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > std::mismatch


Автор: knut 16.1.2007, 15:05
Вот не как не могу понаять эту функц.
std::mismatch(InputIterator1 _First1, InputIterator1 _Last1,InputIterator2 _First2) вроде все просто но по почему в функцие первуй диапазон задаетсе началом и концом диапазона а вот втарой только началом?

Автор: azesmcar 16.1.2007, 15:17
А потому что _Last2 ему ни к чему..он сравнивает элементы контейнера. Это значит что во втором контейнере должно быть как минимум столько же элементов сколько и в первом...вот он и сравнит тебе первые 10 если в первом контейнере 10 элементов.

Автор: knut 16.1.2007, 16:56
почему этот кусок кода не работает?
Код

bool func(std::string str){
std::string::const_iterator strIterEnd = (str.begin() + (str.size()/2) + (str.size() % 2));
return std::mismatch(str.begin(),strIterEnd,str.rbegin()).first == str.end();
}


Автор: azesmcar 16.1.2007, 17:19
Код

bool func(std::string str)
{
    std::string::iterator strIterEnd = (str.begin() + (str.size()/2) + (str.size() % 2));
    return std::mismatch(str.begin(),str.end(),str.rbegin()).first == str.end();
}


Убери const из итератора..правда не совсем понял что ты хотел сделать

Автор: knut 16.1.2007, 17:24
azesmcar, шноракал ем   smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)