c++ - 从 map 中检索值的问题(该值是一个 vector )

标签 c++ c++11 vector key-value treemap

我正在尝试从我的 map 上最大的键中检索值,将该值作为一个 vector ,并尝试将该值保存到一个新的 vector 中。映射键是 double 的,值是 vector 。

这是我的 map :

map <double, vector<long>> correlationValues1;

我想获取具有最高键的值(假设映射键按升序排序):

vector<long> finalDirections1 = (correlationValues1.end())->second;

编译时出现错误:

Error   C2664   'std::pair<const _Kty,_Ty>::pair(std::pair<const _Kty,_Ty> &&)': el argumento 2 no puede convertirse de 'std::vector<double,std::allocator<_Ty>>' a 'const std::vector<long,std::allocator<_Ty>> &' TDI c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\xmemory0   945 

帮助任何人?

附言: 抱歉我的英语不好。

附言: 感谢所有小伙伴的支持!! 它仍然提供编译错误... @那个男孩,我试过你的方法但还是不行......

我不知道这是否真的有影响,但是当我将键和值放入 map 时,我使用 .emplace():

vector<double> arr1;
                arr1.push_back(temp1.FirstRow());
                arr1.push_back(temp1.LastRow());
                arr1.push_back(temp1.FirstCol());
                arr1.push_back(temp1.LastCol());
                vector<double> arr2;
                arr1.push_back(temp2.FirstRow());
                arr1.push_back(temp2.LastRow());
                arr1.push_back(temp2.FirstCol());
                arr1.push_back(temp2.LastCol());

                correlationValues1.emplace(correlation, arr1);
                correlationValues2.emplace(correlation, arr2);

我不知道为什么会这样......

最佳答案

首先,map.end()不是有效的迭代器,map的数据是:

[ map.begin(), map.end() ). It means that iterator < end() and iterator >= begin().

如果你想访问 map 中的最后一个元素,你可以使用

map.rbegin()

--map.end()

// Example program
#include <iostream>
#include <string>
#include <vector>
#include <map>

using namespace std;

int main()
{
    vector<long> v1 = {10,2,3};
    vector<long> v2 = {20,3,4};
    map <double, vector<long>> correlationValues1;
    correlationValues1.insert(pair<double, vector<long>>(10.0, v1));
    correlationValues1.insert(pair<double, vector<long>>(5.0, v2));

    vector<long> finalDirections1 = (correlationValues1.rbegin())->second;
}

关于c++ - 从 map 中检索值的问题(该值是一个 vector ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55708653/

相关文章:

c++ - +=、|=、&= 等是原子的吗?

c++ - 在浮点值 C++ 中存储整数除法

c++ - 在类里面使用模板的困惑

c++ - 带有大 vector 的奇怪输出

c++ - 如何从delphi编译的dll调用c++中的函数

c++ - 如何禁用缩小转换警告?

linux - 在树莓派上使用 libboost 进行编译 - 未定义对 `boost::system::system_category() 的引用

c++ - 在 C++ 中放置新的和对齐

c++ - typedef 的前向声明

java - 在java中旋转3d vector