Я карту с ключом в качестве строки и значения является вектор строки следующим образомЛучший способ сохранить вектор значений в карте
std::map<std::string, std::vector<std::string> > keyTable;
я следующий кусок кода, синтаксического анализа строку значений и сохранить их на карте. Значения разделяются на |. Мне нужно проанализировать их и сохранить в виде вектора строки на карте.
Таким образом, у меня есть следующий фрагмент кода, который это делает. Есть ли лучшее решение для этого с точки зрения скорости и эффективности?
keyTable.insert(key, std::vector<std::string>());
std::vector<std::string>& valueVect = keyTable[key];
boost::tokenizer tokens(str , "|");
for (boost::tokenizer::iterator tok_iter = tokens.begin() ; tok_iter != tokens.end() ; ++tok_iter)
{
valueVect.push_back(*tok_iter);
}
'повышение :: algorithm' есть что-то, что будет дать вам указатель на каждый токен, а не на копию, но я не помню, чтобы это имя. Кроме того, вы можете 'emplace_back' избежать копирования в контейнер. –
Версия и имя компилятора? Поддержка C++ 11? Есть некоторые очевидные улучшения. – Yakk
Visual C++ - Visual 2010 – user373215