Как создать итератор для решения этой проблемы? - PullRequest
1 голос
/ 23 апреля 2011

Итак, у нас есть 3 карты.карты args, headers и params.Они представляют собой строковые карты.
У нас также есть set<settings> Settings_Set где:

struct settings
{
    string name;  
    set<string> args;
    set<string> headers;
    set<string> params;
};

Мы хотим сравнить все наши карты -> первые строки со всеми нашими наборами во всех элементах Settings_Set.После или во время сравнения мы хотим узнать

  • , если на наших картах было найдено более одного из наших sttings в Settings_Set
  • , если на наших картах был найден только один параметр (и вывести егоимя)
  • если ни одна из наших настроек не была найдена в картах

Так как же создать такую ​​вещь?

1 Ответ

3 голосов
/ 23 апреля 2011

Тебе вообще не нужен буст. Также я не вижу экземпляров std::map, даже если вы называете их «картами». Я вижу только наборы.

Это не решение само по себе , а скорее подсказка для его выяснения. Вы можете зациклить элементы set<settings> Settings_Set с помощью:

set<settings>::iterator ite = Settings_Set.begin();

while(ite != Settings_Set.end())
{
// do what you need to do in here
// with the corresponding ite->name, ite->args, ite->headers, and ite->params

// Also, you can see if something is in a set by using:
// set<string>::iterator ites = ite->params.find(std::string("some string"));
// which will put the appropriate iterator into ites if one is found
// or ite->params.end() if one is not found

++ite;
}

Вы должны быть в состоянии собрать это воедино из этой и одной из стандартных ссылок на std::set: Ссылка на набор STL

(Обратите внимание, что я не использовал const_iterator намеренно, потому что я предполагаю, что вы можете изменять значения, как вы сказали в своем посте.)

...