Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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++_Algorithm_Sorting_Vector - Fatal编程技术网

C++ 同步排序多个向量

C++ 同步排序多个向量,c++,algorithm,sorting,vector,C++,Algorithm,Sorting,Vector,假设我想根据向量A按升序对向量A、B和C进行排序,这样向量B和C就会相应地改变。如果向量A包含两个或多个相同的元素,则相应向量C上的较大值将优先考虑。举个例子 A=25,10,10,5,5 B=12,14,3,45,6 C=123,23,12,45,76 在分类之后,它看起来是这样的 A=5,5,10,10,15 B=6,45,14,3,12 C=76,45,23,12,123 谁能告诉你如何编写C++程序?哪个库可以用这个?,你可以使用 zip < /Cord>视图: std::v

假设我想根据向量A按升序对向量A、B和C进行排序,这样向量B和C就会相应地改变。如果向量A包含两个或多个相同的元素,则相应向量C上的较大值将优先考虑。举个例子

A=25,10,10,5,5

B=12,14,3,45,6

C=123,23,12,45,76
在分类之后,它看起来是这样的

A=5,5,10,10,15

B=6,45,14,3,12

C=76,45,23,12,123

谁能告诉你如何编写C++程序?哪个库可以用这个?

,你可以使用<代码> zip < /Cord>视图:

std::vector A = {25,10,10,5,5};
std::vector B = {12,14,3,45,6};
std::vector C = {123,23,12,45,76};
auto r = ranges::view::zip(A, B, C);
ranges::sort(r,
             std::less<>{},
             [](const auto& tup){
                 return std::make_tuple(std::get<0>(tup), -std::get<2>(tup));
             });
std::向量A={25,10,10,5,5};
向量B={12,14,3,45,6};
向量C={123,23,12,45,76};
自动r=范围::视图::zip(A、B、C);
范围::排序(r,
std::less{},
[](常量自动和tup){
返回std::make_tuple(std::get(tup),-std::get(tup));
});


(您可以创建自定义比较器,而不是使用投影“欺骗”并否定C值)

A=25,10,10,5,5
——如果
10
5
不在连续位置怎么办?您如何知道排序标准中使用了哪一个
10
或哪一个
5
?通常,当我看到关于排序一个容器的问题时,第二个(或第三个!)容器的排序会根据该排序进行更改,这通常表示您需要一个复杂数据类型的单一容器,例如
std::vector
std::vector
@PaulMcKenzie,然后我们可以检查C的相应值。这意味着向量A的第二个元素与向量B和C的第二个元素相连。同样,向量B的第三个元素与向量B和CCAN的第三个元素有关,有谁能通过我的例子来帮助我理解,并用C++程序来证明它?哪个部分你不理解?创建自定义数据类型,或者根据您声明的规则对该数据类型进行排序?我建议的方法需要一个结构和一个自定义比较操作。