如何正确 push_back 一个对象?

Posted

技术标签:

【中文标题】如何正确 push_back 一个对象?【英文标题】:How to push_back an object properly? 【发布时间】:2015-05-24 04:08:40 【问题描述】:

您好,我在将对象推回对象向量时遇到问题。

class boxes 
protected:
    int x = 0;
public:
    void setx (int input) 
        x = input;
    
    int getx () 
        return x;
    
 box;

box.setx(5);
vector <boxes> tetris;
tetris.push_back(box);
cout << box.getx();
cout << tetris.back().getx();

为什么两个打印的值不同?第一个给我 x=5,第二个给我 x=0。

【问题讨论】:

你能举一个可运行的例子吗?您使用的是哪个编译器?理想情况下,两者都应该打印 5。 Push_back 将对推送的对象进行复制,默认的复制构造函数对源对象进行按位复制。可能是一些编译器优化在这里发挥作用。在这里查看ideone.com/azrCfy。他们正在打印相同的值。 “为什么两个打印有不同的值” - 他们没有,See it live,并提供工具链信息。 找到了错误的家伙。在我的复制构造函数中,我忘记包含变量 x。非常感谢 【参考方案1】:

如果您提供了复制构造函数,请确保正确实现它。我的错误在那里。

【讨论】:

以上是关于如何正确 push_back 一个对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何 push_back() 结构的成员变量

.push_back 如何在 C++ 中工作?

正确使用用户定义类型的 std::vector.push_back()

c++ 二维容器vector 如何push_back!!?

如何知道向量的正确最大大小?最大尺寸()?但不是

如何使用 unordered_mp 向量插入或 push_back