Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;std::set_C++_Set_Stdset - Fatal编程技术网

C++ C++;std::set

C++ C++;std::set,c++,set,stdset,C++,Set,Stdset,我想按字母顺序列出集合的输出。下面是一个尝试,但它似乎缓慢/低效,我甚至还没有完成它 void ordered(ostream &os) { bool inserted = false; for (objects::iterator i = begin(); i != end(); ) { for (objects::iterator x = begin(); x != end(); ++x) { if((**i) < (**

我想按字母顺序列出集合的输出。下面是一个尝试,但它似乎缓慢/低效,我甚至还没有完成它

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;
        }
    }
}
void命令(ostream&os){
bool-inserted=false;
对于(对象::迭代器i=begin();i!=end();){
对于(对象::迭代器x=begin();x!=end();++x){
如果((**i)<(**x)){//过载并工作

osstd::set
是一个有序的容器,请参阅参考资料:

std::set
是一个关联容器,其中包含一个排序集
Key
类型的唯一对象。使用键比较完成排序 函数比较。搜索、删除和插入操作 对数复杂度。集合通常实现为红黑 树木


std::set
是一个有序容器,请参阅参考资料:

std::set
是一个关联容器,其中包含一个排序集
Key
类型的唯一对象。使用键比较完成排序 函数比较。搜索、删除和插入操作 对数复杂度。集合通常实现为红黑 树木


std::set
已排序。看起来您只需要使用自定义比较器来比较指向的值,而不是指针本身(这是默认值):

模板无结构{
内联布尔运算符()(常数T*a,常数T*b)常数{return*a<*b;}
};
std::设置对象;

std::set
已订购。看起来您只需要使用自定义比较器来比较指向的值,而不是指针本身(这是默认值):

模板无结构{
内联布尔运算符()(常数T*a,常数T*b)常数{return*a<*b;}
};
std::设置对象;

@AlexanderMyshov您在这里尝试改进帖子很好,但请尝试找到比单个标签编辑更值得改进的内容。谢谢!@AlexanderMyshov您在这里尝试改进帖子很好,但请尝试找到比单个标签编辑更值得改进的内容。谢谢!
template<typename T> struct pless {
    inline bool operator()(const T* a, const T* b) const { return *a < *b; }
};
std::set<Foo*, pless<Foo> > objects;