gpt4 book ai didi

c++ - 替换 std::deque const 元素

转载 作者:太空宇宙 更新时间:2023-11-04 16:15:33 25 4
gpt4 key购买 nike

我在双端队列中有 const 对象:

class ConstClass {
public:
ConstClass(int variable): variable_(variable) {}
private:
const int variable_;
};

std::deque<ConstClass> objects;
objects.push_back(ConstClass(1));
objects.push_back(ConstClass(2));
objects.push_back(ConstClass(3));

如何用另一个元素替换第二个元素?

如果我尝试使用 [] =std::replace 来实现,我得到:

Compiler could not generate operator = for class 'ConstClass'

我能想到的唯一方法是创建空双端队列,push_back() 那里的“对象”中的所有元素(用新元素替换第 N 个元素),然后清除() 'objects' 双端队列和 push_back() 将临时双端队列中的元素复制回 'objects'..

我确信有更明智的方法来做到这一点,但我不知道该怎么做?

最佳答案

你不能。您的容器无效,因为它的元素类型必须是可复制分配或可移动分配的,而您的两者都不是。这不会在构建时被诊断出来,但您已经看到当您尝试执行依赖于此属性的操作时发生的编译错误。

您可以通过重载元素类型的复制和移动赋值运算符以忽略 const 成员,使其合法且可编译,但尚不清楚这是否有意义。

要么将 std::unique_ptr 存储到动态分配的对象中,要么重新考虑模型。

关于c++ - 替换 std::deque const 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176200/

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