【发布时间】:2015-04-18 16:52:20
【问题描述】:
在 C++ 中,我有一个 map < int, vector < double > > 或 map < int, vector < some_Struct > >,我需要连接此映射中的向量并返回结果。
函数的第一个版本如下:
#include <algorithm>
#include <vector>
vector < double >
flattenRecords(const map < int, vector < double > > & selected, int num_kept_reps)
{
vector < double > records;
int cnt = 0;
for (auto it = selected.begin(); it != selected.end(); ++it) {
records.insert(records.end(),
make_move_iterator(it->second.begin()),
make_move_iterator(it->second.end()));
cnt += 1;
if (cnt >= num_kept_reps)
break;
}
return records;
}
我知道这不是我打算做的,因为我想将数据保留在map 中,因此不应该使用make_move_iterator。
代码可以使用带有-std=c++0x 标志的g++ (GCC) 4.4.7 进行编译。
所以问题来了,我将map 声明为const,当我尝试在map 中使用std::move 到vector 时会发生什么?
我的第二个版本是使用:
copy(it->second.begin(), it->second.end(), back_inserter(records));
我想这就是我打算做的。
我对 C++ 很陌生。 STL给了我一种用python编码的感觉,所以我想尝试一下。
【问题讨论】:
标签: c++11 dictionary vector constants