gpt4 book ai didi

c++ - 当 STL 容器复制到自身时,是否应该避免将元素复制到自身中?

转载 作者:行者123 更新时间:2023-12-02 05:36:42 25 4
gpt4 key购买 nike

问题是关于 self 分配的。例如将 vector 复制到自身中:

std::vector<std::string> vec(5, "hello");
vec = vec;

上面的代码应该对字符串执行 5 次赋值操作,还是什么都不做?我的意思是以下检查是否有效:

std::vector operator=(const std::vector &rhs)
{
if (this == &rhs)
{ return *this; }
...
}

我正在开发自己的 std::variant 类的实现(只是为了好玩),并且有兴趣是否应该在赋值运算符的开头添加自赋值检查,或者应该我只是将包含的元素复制到其自身中?

我知道通常这并不重要。您不应该创建一个利用复制到自身这一事实的类。但我很感兴趣该标准是否对此有任何说明。

最佳答案

标准规定的容器分配前/后条件(引用最新草案):

[tab:container.req]

r = a

Ensures: r == a.

这允许但不强制执行自分配检查。

关于c++ - 当 STL 容器复制到自身时,是否应该避免将元素复制到自身中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com