C++std::set的排序输出
Ordering output of C++ std::set
我想按字母顺序列出集合的输出。下面是一个尝试,但它似乎很慢/效率低下,我甚至还没有完成。
void ordered(ostream &os) {
bool inserted = false;
for (objects::iterator i = begin(); i != end(); ) {
for (objects::iterator x = begin(); x != end(); ++x) {
if((**i) < (**x)) { //overloaded and works
os << **i << endl;
inserted = true;
break;
}
}
if(inserted) {
++i;
}
}
}
显然,这将只输出按字母顺序位于第一个对象之后的对象。
我还考虑过将对象从一个集合移动到另一个容器中,但这似乎仍然效率低下。
std::set
是一个有序容器,请参阅参考:
http://en.cppreference.com/w/cpp/container/set
std::set
是一个关联容器,包含的排序集类型为CCD_ 3的唯一对象。使用关键字比较进行排序函数Compare。搜索、删除和插入操作对数复杂度。集合通常实现为红黑树木。
std::set
已订购。看起来你只需要使用一个自定义比较器来比较指向的值,而不是指针本身(这是默认的):
template<typename T> struct pless {
inline bool operator()(const T* a, const T* b) const { return *a < *b; }
};
std::set<Foo*, pless<Foo> > objects;
相关文章:
- 使用C++程序合并排序没有得到正确的输出
- 显示错误输出的简单数组排序程序
- 没有输出的合并排序我做错了什么?
- 不正确的比较和交换计数器输出用于快速排序功能
- 合并排序没有给我任何输出
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 为什么这个快速排序实现给出了一个奇怪的输出
- C++向量排序给出0作为输出
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- 插入排序打印错误的输出
- 输出可序列化的排序整数
- 我写了一个快速的排序代码,逻辑似乎很正确,但是控制台上没有输出
- 获取有趣的输出以进行插入排序
- 计数排序输出问题:读取访问冲突
- 合并排序不正确的输出 c++
- C 从文件和输出排序的内容中读取
- 如何修复输出显示,以便显示正确排序的数据
- 快速排序中的交换函数给出错误的输出
- 是c armadillo find()输出排序
- c++输入输出排序