【问题标题】:std::list::sort and pointers to elementsstd::list::sort 和指向元素的指针
【发布时间】:2013-02-24 14:16:43
【问题描述】:

如果我在列表上调用 sort() 方法,指向 std::list 元素的指针是否仍然有效?这个(标准)有保证吗?它似乎在 Visual Studio 2012 下工作。

【问题讨论】:

    标签: c++ list sorting pointers reference


    【解决方案1】:

    来自“C++ 工作草案,2012-11-02”

    23.3.5.5 列表操作 [list.ops]
    void sort();
    template <class Compare> void sort(Compare comp);
    28 要求:operator<(对于第一个版本)或 comp(对于第二个版本)应定义严格的弱 排序 (25.4)。
    29 效果:根据operator<Compare 函数对象对列表进行排序。不影响 迭代器和引用的有效性。
    30 备注:稳定。
    31 复杂度:大约 N log(N ) 次比较,其中N == size()

    【讨论】:

      【解决方案2】:

      排序不会移动内存中列表的元素,只会改变下一个和上一个链接指针。应该没问题的。

      【讨论】:

        猜你喜欢
        • 2011-03-18
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多