将std :: strings插入到std :: map中

Pau*_*ulH 5 c++ string performance map

我有一个程序,可以逐行读取文件中的数据.我想将该行的一些子字符串复制到地图中,如下所示:

std::map< DWORD, std::string > my_map;
DWORD index;         // populated with some data
char buffer[ 1024 ]; // populated with some data
char* element_begin; // points to some location in buffer
char* element_end;   // points to some location in buffer > element_begin

my_map.insert( std::make_pair( index, std::string( element_begin, element_end ) ) );
Run Code Online (Sandbox Code Playgroud)

std::map<>::insert()操作需要很长时间(它使文件解析时间加倍).有没有办法让这个更便宜的操作?

谢谢,PaulH

编辑:更具体地说,我想知道我正在进行最少数量的复制操作,以便将文件中的数据传入地图.

小智 1

稍微回答一下你的补充问题。尝试将映射暂时更改为字符串向量,然后计时将固定字符串值插入到向量中例如:

vector <string> v;
string s( "foobar" );

your insert loop:
   v.push_back( s );
Run Code Online (Sandbox Code Playgroud)

这应该给你一个关于速度可能的下限。

另外,您应该在打开所有优化的情况下计时(如果您还没有这样做)。这可以对许多标准库操作产生惊人的影响。