나는가장 좋은 방법
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