C++;按列对二维向量排序 有人告诉我,在不使用Boost的情况下,C++中用列排序二维向量的最佳方法。我做了一些搜索,找不到一个好的答案

C++;按列对二维向量排序 有人告诉我,在不使用Boost的情况下,C++中用列排序二维向量的最佳方法。我做了一些搜索,找不到一个好的答案,c++,sorting,vector,2d,C++,Sorting,Vector,2d,谢谢STL中的sort()函数可以帮您完成。您只需要编写一个函数来比较向量中的两种情况 之后,它取决于您需要的排序类型,您可以对列逐个排序,然后是第一行。要回答这个问题,我必须做出假设,这意味着您可以给我们提供更多信息 假设1:您所称的“2D向量”是向量的向量,例如向量 假设2a:内部向量是行,这意味着,您希望按照外部向量的第二个元素对外部向量进行排序。在这种情况下,它有一个重载,将比较器作为它的第三个参数。唯一需要做的就是编写一个比较器(即函数、函数对象、lambda等),它接受两个向量,并

谢谢

STL中的sort()函数可以帮您完成。您只需要编写一个函数来比较向量中的两种情况


之后,它取决于您需要的排序类型,您可以对列逐个排序,然后是第一行。

要回答这个问题,我必须做出假设,这意味着您可以给我们提供更多信息

假设1:您所称的“2D向量”是向量的向量,例如
向量

假设2a:内部向量是行,这意味着,您希望按照外部向量的第二个元素对外部向量进行排序。在这种情况下,它有一个重载,将比较器作为它的第三个参数。唯一需要做的就是编写一个比较器(即函数、函数对象、lambda等),它接受两个向量,并通过它们的第N个元素进行比较。不应该太难


假设2b:内部向量是列,也就是说,您希望对其中一个内部向量进行排序,并对彼此的行应用重新排序。这有点复杂,例如,你可以制作另一个从0到N的索引向量,并用一个比较器排序,给定两个索引
i
j
通过实际比较
column[i]
column[j]
对它们进行比较。对该向量排序后,可以相应地对所有列重新排序。

假定您有一个“向量向量”。哪个向量是你的列,内部的还是外部的?这有很大的不同。还有,你的排序标准是什么?它是一个3x3向量,我将一个1x3向量推到外部向量上3次。它们是整数的向量,所以我只是尝试按第二列的降序进行排序。我不确定是否要听你的,你能给我们向量声明的代码吗?当你向中添加数据时?2a适用于我。谢谢,我会试试的。很有效。我刚刚使用了比较器函数bool myfunction(向量I,向量j){return(I[2]