c++按列排序二维向量
C++ sort 2d vector by column
有人能告诉我在c++中不使用boost的情况下按列排序2d向量的最佳方法吗?我做了一些搜索,但我找不到一个好的答案。
谢谢
要回答这个问题,我必须做出假设,这意味着你可以给我们更多的信息。
假设1:你所说的"2D向量"是向量的向量,例如一个vector<vector<int>>
。
假设2a:内部向量是行,这意味着,你想对外部向量进行排序,例如,对其内部向量的第二个元素进行排序。在这种情况下,std::sort
启动,它有一个过载,将比较器作为其第三个参数。你唯一要做的就是写一个比较器(即一个函数,函数对象,lambda等),它取两个向量并通过它们的第n个元素进行比较。不应该太难。
假设2b:内部向量是列,即您希望对其中一个内部向量排序并将重新排序应用于其他行。这有点复杂,例如,你可以做另一个索引0到N的向量,用比较器排序,给定两个索引i
和j
,通过比较column[i]
和column[j]
来比较它们。在对该向量进行排序之后,可以相应地对所有列重新排序。
STL中的sort()函数可以为您完成此操作。你只需要写一个函数来比较向量中的两种情况。
http://www.cplusplus.com/reference/algorithm/sort/之后,这取决于您需要排序的类型,您可以对列逐一排序,然后对第一行进行排序。
相关文章:
- 我在二维向量中是否正确分配了内存
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 如何在C++中将.csv文件的元素存储到二维向量中?
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在我为我的二维向量提供第一个值后控制台关闭
- 以C++输出二维向量
- 在 c++ 中赋值给二维向量
- 在二维向量的每一列中查找最大值
- 类对象初始化的二维向量
- 有没有办法像python:np.concatenate([x,y,z],axis=1)中那样沿着列连接三个二维向量C++
- 我如何在二维向量中存储一些数组
- 我可以push_back矩形形状到继承矩形形状的类的二维向量中吗?
- 二维向量的迭代器
- 在 STL 中,如何交换二维向量
- 创建一个二维向量阵列,遍历
- 创建二维向量的错误
- C++从文件中读取信息并从该信息构建二维向量