Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.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++ 排序std::reference\u包装器数组、引用向量时出现问题_C++_Std_Reference Wrapper - Fatal编程技术网

C++ 排序std::reference\u包装器数组、引用向量时出现问题

C++ 排序std::reference\u包装器数组、引用向量时出现问题,c++,std,reference-wrapper,C++,Std,Reference Wrapper,我对此有点困惑,我正在使用std::数组来存储向量的引用包装器。我试图使用std::sort按向量大小对它们进行排序,但由于我不太确定的原因,即使在阅读了编译器错误之后,我也无法进行排序。我将不得不使用另一个sort函数,因为std::sort实现似乎使用了在引用包装器上无法使用的操作 谢谢:) #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 void findSum(const std::vector&vec1、const std::vector&vec2、const std

我对此有点困惑,我正在使用std::数组来存储向量的引用包装器。我试图使用std::sort按向量大小对它们进行排序,但由于我不太确定的原因,即使在阅读了编译器错误之后,我也无法进行排序。我将不得不使用另一个sort函数,因为std::sort实现似乎使用了在引用包装器上无法使用的操作

谢谢:)

#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
void findSum(const std::vector&vec1、const std::vector&vec2、const std::vector&vec3)
{    
数组向量参考{vec1,vec2,vec3};
std::sort(std::cbegin(vecRefs),std::cend(vecRefs),[](const auto vecA,const auto vecB)->bool{
返回vecA.get().size()>vecB.get().size();//降序
});
//vecRefs现在应该以降序存储向量的引用包装器
//先打印最长vec,后打印最短vec
用于(常量自动向量:向量引用)
{
for(const auto val:vec.get())
{

std::cout这是因为您在
std::sort
中使用了
std::cbegin
(const begin)和
std::cend
(const end)
这意味着您不能更改数组的顺序!
只需将其替换为
std::begin
std::end
,如下所示:

std::sort(std::begin(vecRefs), std::end(vecRefs), [](const auto vecA, const auto vecB) -> bool {
        return vecA.get().size() > vecB.get().size();
        });

您正在将
常量迭代器
传递到
排序
。这无法工作。顺便说一句,您缺少包含引用的包装器。谢谢,我只是无法正确理解错误消息。