如何在列表中传输地图的内容而不复制它
How to transfer the content of a map in a list without copying it
我有一个相当大的map<double, vector<double>>
,比如myMap
。我想把myMap[.].second
的含量放在list<vector<double> >
或vector<vector<double> >
中。是否有可能在不显式复制每个vector
元素的情况下做到这一点?我希望这是可行的iterators
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main()
{
double v_value[] = {1.1,2.4};
vector<double> v(v_value, v_value + sizeof(v_value)/sizeof(double));
map<double,vector<double> > myMap;
myMap[10.01] = v;
myMap[14.62] = v;
}
在c++03中,您可以对映射中的每个向量使用std::vector::swap
,将其转换为列表中的空向量。在c++ 11中,您可以从一种转换到另一种。两者都避免复制,但显然会修改源映射。
std::map<double, vector<double> > m = ....;
std::list<std::vector<double> > l(size_of_map); // list full of empty vectors
// iterate over map
typedef std::map<double, vector<double>>::iterator map_iter;
size_t list_counter = 0;
for(map_iter it = m.begin(); it != m.end(); ++it) {
l[list_counter].swap(it->second);
++list_counter;
}
在c++ 11: std::map<double, vector<double>> m = ....;
std::list<std::vector<double>> l; // empty list
for(auto it = m.begin(); it != m.end(); ++it) {
l.push_back(std::move(it->second));
}
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何在没有复制构造函数的情况下为地图设置值?
- 如何启动地图的复制构造函数?
- C++将所有元素从矢量复制到地图/unordered_map的最佳方法
- Qt C++ 如何将哈希的副本复制到地图
- 从地图复制到指针列表
- 将地图/多重地图键复制到矢量或集
- 将映射从第二个元素复制到另一个地图
- 如何使用STL复制地图,过滤和减少C 的行为
- 复制地图<双精度,元组<双精度,双精度>>映射<双精度,双精度>没有循环?
- 如何将std ::映射的第一个N元素复制到另一个地图
- C++ <algorithm>: 复制地图<A,B> 到库特?
- 使用不可复制(但可移动)键移动地图分配时出错
- 如何使用转换将文件复制到地图
- 在地图中插入对象而不复制对象
- 将列表复制到C++中的地图
- 如何将地图的反面复制到另一张地图上
- 这个不可复制的地图是合法的c++11吗?GCC 4.7和MSVS 2010允许.Clang 3.1不允许
- 如何在列表中传输地图的内容而不复制它
- 是否可以将STL复制功能与地图一起使用