好的,我有一个vector< vector < long >>
,我希望将最里面的向量从最小到最大排序 - 即我希望在排序时将vector < long >
排序为3,7,21。
以前曾经问过这个问题,但我想这样做非常简单,以便非程序员能够理解。我已经看到我可以创建一个函数或函子来排序as in this question.有没有办法在不创建额外排序功能的情况下执行此操作?我正在做这个作为课程的一部分,我希望有一种方法可以做到这一点,而不必让人们在我的代码中搜索简单的排序函数。
一种可能性是可能有某种方法在类函数中定义排序函数,但在C ++中可能不允许这样做。
回到这一点:我已经看到了几种方法,我想知道最简单的方法是对整数向量进行排序。非常感谢任何帮助,因为这可能比看起来更有帮助。
答案 0 :(得分:3)
std :: sort函数使用std::less<T>
函数作为默认排序。要获得逆序,请明确使用std::greater<T>
函数。
我只是使用循环来遍历外部向量,然后分别对每个内部向量进行排序。除非我误解了这个问题。
答案 1 :(得分:2)
您无法在C ++ 03中内联定义函数。最新版本的GCC和MSVC支持C ++ 0x lambda函数,您可以将其用于此目的。
答案 2 :(得分:2)
我认为这应该非常接近
#include <vector>
#include <algorithm>
std::vector< std::vector < long >> list;
std::vector< std::vector < long >>::iterator i;
for ( i = list.begin(); i != list.end(); ++i )
std::sort( (*i).begin(), (*i).end() );
答案 3 :(得分:2)
如果只想排序内部向量,那么您只需使用默认排序顺序:
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<vector<long>> v;
for (auto i = v.begin(); i != v.end(); ++i)
sort(i->begin(), i->end());
return 0;
}
此示例使用最新版本的标准。旧的C ++编译器的一个例子会更冗长。