Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从映射中检索值时出现问题(该值是向量)_C++_C++11_Vector_Key Value_Treemap - Fatal编程技术网

C++ 从映射中检索值时出现问题(该值是向量)

C++ 从映射中检索值时出现问题(该值是向量),c++,c++11,vector,key-value,treemap,C++,C++11,Vector,Key Value,Treemap,我试图从地图上最大的键中检索值,作为向量的值,并试图将该值保存到新的向量中。贴图键是双精度的,值是向量 这是我的地图: 映射相关值1; 我想得到具有最高键的值(假设贴图键按升序排序): vector finalDirections1=(correlationValues1.end())->秒; 当我编译时,我得到一个错误: 错误C2664'std::pair::pair(std::pair&):el argumento 2无puede const de'std::vector'a'const

我试图从地图上最大的键中检索值,作为向量的值,并试图将该值保存到新的向量中。贴图键是双精度的,值是向量

这是我的地图:

映射相关值1;
我想得到具有最高键的值(假设贴图键按升序排序):

vector finalDirections1=(correlationValues1.end())->秒;
当我编译时,我得到一个错误:

错误C2664'std::pair::pair(std::pair&):el argumento 2无puede const de'std::vector'a'const std::vector&'TDI c:\program files(x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\xmemory0 945
有人帮忙吗

附言: 对不起,我的英语很差

p.p.S.: 谢谢大家的支持!! 它仍然传递编译错误。。。 @男孩,我试过你的方法,但仍然不起作用

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

向量arr1;
arr1.向后推(temp1.FirstRow());
arr1.向后推(temp1.LastRow());
arr1.向后推(temp1.FirstCol());
arr1.向后推(temp1.LastCol());
载体arr2;
arr1.向后推(temp2.FirstRow());
arr1.向后推(temp2.LastRow());
arr1.向后推(temp2.FirstCol());
arr1.向后推(temp2.LastCol());
相关性值1.侵位(相关性,arr1);
相关性值2.侵位(相关性,arr2);
我不知道为什么会发生…

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

[map.begin(),map.end())。这意味着迭代器=begin()

如果要访问映射中的最后一个元素,可以使用

map.rbegin()

--map.end()

//示例程序
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
向量v1={10,2,3};
向量v2={20,3,4};
地图相关值1;
相关值1.插入(对(10.0,v1));
相关值1.插入(对(5.0,v2));
向量finalDirections1=(correlationValues1.rbegin())->秒;
}
首先,map.end()不是有效的迭代器,map的数据是:

[map.begin(),map.end())。这意味着迭代器=begin()

如果要访问映射中的最后一个元素,可以使用

map.rbegin()

--map.end()

//示例程序
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
向量v1={10,2,3};
向量v2={20,3,4};
地图相关值1;
相关值1.插入(对(10.0,v1));
相关值1.插入(对(5.0,v2));
向量finalDirections1=(correlationValues1.rbegin())->秒;
}

correlationValues1.end()
未指向容器的最后一个元素。请参阅:。您必须找到最后一个元素。首先,也是最重要的一点,end()不返回容器的最后一个元素。其次,发布一个。错误消息中提到的
vector
不在发布的片段中。(spoiler:use
rbegin
)。可能的重复看起来像是您的实际代码具有不同的向量类型。
correlationValues1.end()
没有指向容器的最后一个元素。请参阅:。您必须找到最后一个元素。首先是end()不返回容器的最后一个元素。其次,发布一个。您的错误消息提到
vector
,它不在发布的片段中。(扰流板:使用
rbegin
)。可能的重复看起来你的实际代码有不同的向量类型。它完全有效!!谢谢你的帮助!这就是我要找的;)它完全有效!!谢谢你的帮助!这就是我要找的;)
// 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;
}