对对象矢量的矢量进行排序
Sort vector of vectors of objects
我有一些向量中的向量,如下所示:
vector<vector<Object> > vec;
我还有一个std::sort
的comp
函数的结构
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);
}
但这对我来说并不奏效。
所以,我有两节课。一个类只是在向量中填充另一个类的对象。然后我制作更多的物体向量,并将它们推到向量的向量中。然后我想按名称或其他东西对大向量中向量的对象进行排序。
您有一个包含vector
-s的vector
。您还有一个函数对象,可以对包含Object
-s的vector
-s进行排序。这意味着您的排序函子可以对vector<Object>
-s进行排序,而不能对vector<vector<Object>>
-s进行排序。
您必须编写另一个能够对vector<vector<Object>>
-s进行排序的函子,例如根据它们的大小。
如果你有这个:
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);
这很简单。然而,如果您想在嵌套向量之间执行排序,则需要更复杂的算法,您应该质疑自己为什么首先选择使用向量中的向量。
相关文章:
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 对象接收堆栈溢出异常 c++ 的排序向量
- 如何使用 STL 排序对具有模板专用化的自定义类对象进行排序?
- 排序谓词没有传递对索引对象的引用?
- 使用指针指向对象C++对向量进行排序
- 按类成员的顺序对包含类对象的C++向量进行排序
- 无法使用接口类型对priority_queue中的对象进行排序<T>
- 基于不同字段的对象向量的排序功能
- 基于3个对象的自定义排序
- 尝试使用比较运算符对对象向量进行排序
- C++排序的对象集
- 从文件中读取并将其内容放入对象数组中,然后对它们进行排序
- q排序类对象的列表
- std::atexit 从全局对象的构造函数调用时的排序
- 尝试对对象数组进行排序时程序终止
- std::排序为排序自定义对象时出现的向量引发错误
- 使用sort()算法C 排序对象列表
- 使用std::sort与自定义排序对象和数据类型模板-寻找正确的语法
- 快速方法部分排序对象
- 如何在动态内存中排序对象列表,在c++中使用泛型向量