转换c++映射到C数组-性能

Convert C++ map to c arrays - Performance

本文关键字:数组 性能 c++ 映射 转换      更新时间:2023-10-16

在性能方面是否有更好的方法将映射映射转换为char*数组[]和C中的整数数组?

map<string, int> imap; // Code below will build the imap
....
....
....
char** carr;
int* iarr;
*carr = (char**)malloc(sizeof(char*)*imap.size());
*iarr = (int*)malloc(sizeof(int)*imap.size());
index = -1;
for(iter = imap.begin(); iter != imap.end(); ++iter)
{
    (*carr)[++index] = strdup(iter->first.c_str());
    (*iarr)[index] = iter->second;
}

-Kartlee

没有。只要稍微美化一下你的代码。我想一个好的编译器会优化所有的异常。

我会避免调用c_str(),如果可能的话,我会创建STL字符串数组,因为这是在脚本中使用最多时间的事情。

另一个边注:我自己把漂亮的、可理解的代码放在性能之前。整理你的代码,去掉那些丑陋的错误。c++支持NEW操作符