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())。这意味着迭代器//示例程序
#包括
#包括
#包括
#包括
使用名称空间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())。这意味着迭代器//示例程序
#包括
#包括
#包括
#包括
使用名称空间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:userbegin
)。可能的重复看起来像是您的实际代码具有不同的向量类型。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;
}