установка lower_bound в наборе stl - PullRequest
0 голосов
/ 22 марта 2012

Я хочу установить lower_bound и upper_bound для мультимножества структур для перебора диапазона. Как правильно установить его для строк?

#include ...
...    
struct foo{
    int bar;
    string test;
};

struct comp{
    inline bool operator()(const foo& left,const foo& right){
        return strcasecmp(left.test.c_str(), right.test.c_str());
    }
};

int main(){
    std::multiset<foo,comp> fooset;
    std::multiset<foo,comp>::iterator it, itLow;

    ...//insert into fooset

    //how do set lower_bound to element where string is "aab" or whatever?

    return 0;
}

Как мне установить itLow, чтобы он указывал на элемент с проверкой строки, начинающейся с "ab"?

Я пытался:

itLow = fooset.lower_bound("string");

Я знаю, что этого недостаточно ... но я не уверен, как это сделать.

Спасибо!

1 Ответ

1 голос
/ 22 марта 2012

Вам нужно создать foo из строки, а затем использовать lower_bound (или upper_bound, в зависимости от обстоятельств) для поиска позиции:

struct foo {
    int bar;
    string test;

    foo(string i) : test(i) {}
};

std::multiset<foo, comp> fooset;

std:multiset<foo,comp>::iterator it = 
    std::lower_bound(fooset.begin(), fooset.end(), foo("string"), comp());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...