我有一个相当大的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;
}
Run Code Online (Sandbox Code Playgroud)
在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;
}
Run Code Online (Sandbox Code Playgroud)
在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));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |