【发布时间】:2015-07-01 04:26:33
【问题描述】:
我需要按字典顺序对vector<vector<int> > vecOfVectors; 进行排序。
所以,我在按字典顺序排序之前的 vecOfVectors 是:
((0,100,17,2),(2,3,1,3),(9,92,81,8),(0,92,92,91),(10,83,7,2),(1,2,3,3))
为此,我使用以下功能:
std::sort(vecOfVectors.begin(),vecOfVectors.end(),lexicographical_compare);
所以,按字典顺序排序后的 vecOfVectors 现在是:
((0,92,92,91),(0,100,17,2),(1,2,3,3),(2,3,1,3),(9,92,81,8),(10,83,7,2))
现在给定一个向量,我需要在这个排序的 vecOfVectors 中搜索它的位置——像二分搜索这样的东西会很好用。 c++ stl 中是否有一些内置函数可用于执行二进制搜索?
例如: (0,92,92,91)的位置为0; (0,100,17,2) 的位置是 1; (1,2,3,3) 的位置是 2; (2,3,1,3) 的位置是 3; (9,92,81,8) 的位置是 4; (10,83,7,2) 的位置是 5。
【问题讨论】:
-
不需要任何二分查找,你可以创建一个函数 compare(vector
,vector ) 来判断其中哪个是字典顺序的。 -
@MadhuKumar 听起来不错,请您借助示例进行解释
-
您是否尝试过在网上搜索 C++ 中的二进制搜索算法?
标签: c++ sorting c++11 vector stl