我有一些像这样的矢量矢量:
vector<vector<Object> > vec;
我还有comp
std::sort
函数的结构
struct SortByName {
bool operator() (Object& o1, Object& o2) {
return o1.getName() < o2.getName();
}
} _sortByName;
然后我初始化我的排序方法:
void Object::sort_by_name() {
std::sort(vec.begin(), vec.end(), _sortByName);
}
但这对我没有用。
所以,我有两节课。一个类只是在向量中填充另一个类的对象。然后我正在制作更多的物体矢量并将它们推入矢量矢量。然后我想通过名称或其他东西对大矢量内的矢量对象进行排序。
答案 0 :(得分:0)
您的vector
包含vector
- s。您还有一个函数对象可以对包含vector
- s的Object
进行排序。这意味着您的排序仿函数可以对vector<Object>
- s进行排序,而不是vector<vector<Object>>
- s。
你必须编写另一个能够对vector<vector<Object>>
- s进行排序的仿函数,例如根据它们的大小。
答案 1 :(得分:0)
如果你有这个:
vector<vector<Object>> vec;
您可以对所有嵌套向量进行排序:
for(auto &nested_vec : vec)
std::sort(nested_vec .begin(), nested_vec .end(), _sortByName);
或只是一个特定的嵌套向量:
std::sort(vec[index].begin(), vec[index].end(), _sortByName);
这很简单。但是,如果你想在嵌套向量之间进行排序,它将需要一个更复杂的算法,你应该首先问自己为什么首先选择使用向量向量。