将 <string, vector<double>> map 转换为 <string, double[]> map

Converting <string, vector<double>> map to <string, double[]> map

提问人:Carlos 提问时间:6/7/2023 最后编辑:PaulMcKenzieCarlos 更新时间:6/7/2023 访问量:106

问:

在 C++ 中,我有一个 的形式.我需要将那些双精度的向量更改为双精度数组,以便我得到一个vector_map<string, std::vector<double>>array_map<string, double[]>

问题在于,在这样做时,映射中每个元素的数组都是相同的,并且它们的元素与原始向量的元素不同。我现在所拥有的是:

map<string, double*> array_map;
  for (auto it : vector_map){
    double temp_arr[size of it.second as a const];
    std::copy(it.second.begin(), it.second.end(), temp_arr);
    array_map.insert({it.first, temp_arr});
  }
C++ stdmap 标准

评论

0赞 463035818_is_not_an_ai 6/7/2023
你为什么需要这个?你知道返回一个指向数据数组吗?std::vector<double>::data()double*
1赞 Some programmer dude 6/7/2023
为什么不呢?你真的需要在钥匙上订购地图吗,也可以吗?std::map<std::string, std::vector<double>>std::unordered_map
1赞 Some programmer dude 6/7/2023
至于您展示的代码的另一个问题,除了 VLA 问题之外,数组在循环内是本地的。每次迭代的生存期都将结束,您存储的指针将立即失效。
1赞 Some programmer dude 6/7/2023
编辑您的问题,告诉我们此代码应该解决的实际潜在问题。为什么需要指针地图?为什么不能使用向量本身提供的指针?
2赞 Pepijn Kramer 6/7/2023
为什么要回到“C”样式的数组,在那里你会丢失所有大小信息和内存管理?std::vector 有一个数据方法,用于返回指向其内部数据的指针...

答: 暂无答案