1
我有一張map<double, tuple<double, double>> m1
的地圖。我是否可以將其複製到map<double, double> m2
表格的地圖上,使其密鑰相同,並且m2中的值爲get<0>(m1->second)
而不使用循環?謝謝!將映射<double,tuple <double,double >>映射爲<double,double> without loop?
我有一張map<double, tuple<double, double>> m1
的地圖。我是否可以將其複製到map<double, double> m2
表格的地圖上,使其密鑰相同,並且m2中的值爲get<0>(m1->second)
而不使用循環?謝謝!將映射<double,tuple <double,double >>映射爲<double,double> without loop?
會是這樣的工作嗎?
vector<pair<double, double>> v(m1.size());
auto lambda = [](pair<double, tuple<double, double>> p){ return make_pair(p.first, get<0>(p.second)); };
transform(m1.begin(), m1.end(), v.begin(), lambda);
map<double, double> m2(v.begin(), v.end());
請注意,我們並沒有真正避免循環;我們只是讓std::transform
爲我們做循環。如果不允許間接循環,你可能需要的是一個變換迭代器。請參閱http://www.boost.org/doc/libs/1_36_0/libs/iterator/doc/transform_iterator.html
不推薦使用'map',因爲鍵值的任何輕微偏移都會導致不一致的結果。 –
@MarkRansom也許他正在使用它進行排序。您仍然可以使用它來查找所有鍵> x'等。 –
我所擁有的是一個地圖,其中鍵是將來的若干年,採用十進制格式。例如,從今天起1.5年。我能否遇到這種用法的問題?謝謝。 –