【问题标题】:What is the difference between "vector::operator=" and "vector::assign"?“vector::operator=”和“vector::assign”有什么区别?
【发布时间】:2017-05-09 11:01:36
【问题描述】:

std::vector 类中的.operator=(std::initializer_list<T>).assign(std::initializer_list<T>) 有什么区别?他们也这样做吗?

http://en.cppreference.com/w/cpp/container/vector/operator%3D

http://en.cppreference.com/w/cpp/container/vector/assign

同时拥有assign 和赋值运算符operator= 的整体想法是什么? assign 成员是否可以接受多个参数? (但是 std::initializer_list 是一个参数。)

【问题讨论】:

    标签: c++11 stdvector assignment-operator initializer-list


    【解决方案1】:

    它们的返回类型不同:运算符通过引用返回向量,assign 返回 void。

    从技术上讲,initializer_list 的赋值规范说元素是“已分配或销毁”,而从 initializer_list 赋值“替换元素”(Table 87),但这似乎无关紧要:一个的实际实现只是调用另一个(我检查 libc++ 和 libstdc++)

    【讨论】:

      【解决方案2】:

      同时拥有assign 和赋值运算符operator= 的整体想法是什么

      您可以将一对迭代器(范围)传递给assign,但不能传递给operator=

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-07
        • 2020-12-27
        • 2011-02-28
        • 1970-01-01
        • 2019-09-06
        • 2020-07-15
        • 2022-08-07
        相关资源
        最近更新 更多