【发布时间】:2018-02-13 12:16:15
【问题描述】:
我有一个项目要求我按特定列从 .csv 文件读取值并对其进行排序。
我在 C++ 中使用算法库,即#include <algorithm>
该库具有我计划使用的功能sort()。
它要求我指定开始和结束,例如,对于一个名为 vect 的 2d 向量,它需要 vect.begin() 和 vect.end()。
我的问题是,是否可以为 sort() 函数指定确切的开始位置和结束位置。这就像从 vect[1][0] 开始并在 vect[9][9] 结束。
感谢您的帮助
【问题讨论】:
-
你不能
std::sort2D 向量/数组。你希望这样做会有什么结果? -
如果
vect.begin()是向量的第一个元素(假设它不为空),那么你认为vect.begin() + 1是什么? -
对列进行间接排序,然后使用索引访问行。在此处查看示例:stackoverflow.com/questions/48764471/…
-
@HolyBlackCat 好吧,当我根据一列对值进行排序时,它确实有效,尽管它也将表格的标题移到了底部,这就是我试图避免的
-
@HolyBlackCat :当然你可以对二维向量进行排序。向量的排序向量的自然定义是结果具有按字典顺序存储的内部向量(因此 [[4, 5, 6], [1, 2, 3], [1, 2, 4]] 将是输出为 [[1, 2, 3], [1, 2, 4], [4, 5, 6]])。当然,实际上,
std::vector没有定义operator <。无论如何,OP 都需要一个客户比较函子来选择列。
标签: c++