从另一个结构中向结构内的向量添加元素

进程号

这很可能是微不足道的,我以某种方式混淆了结构分配和指针,我为此道歉。我已经阅读了类似问题的答案,但没有帮助。代码一如既往地更加复杂,这是从 3000 多行代码减少到要点。

我期望的输出是

prep 1
main 1

相反,我得到

prep 1
main 0

这是代码:

#include <iostream>
#include <vector>

using namespace std;

struct Entry
{
    vector<int> list;
};

struct Registry
{
    vector<Entry> entries;

    void prep()
    {
        Entry* entry = new Entry();
        entries.push_back(*entry);
        entry->list.push_back(0);
        cout << "prep " << entry->list.size() << "\n";
    }
};

int main()
{
    Registry registry;
    registry.prep();
    cout << "main " << registry.entries[0].list.size() << "\n";

    return 1;
}
泰德·林格莫

你不在你的指针中存储指针,vector<Entry>所以你不应该使用new. 而是添加一个Entry使用emplace_back.

C++17 方法:

void prep()
{
    Entry& entry = entries.emplace_back(); // returns a ref the added element
    entry.list.push_back(0);
    cout << "prep " << entry.list.size() << "\n";
}

在 C++17 之前:

void prep()
{
    entries.emplace_back(); // does NOT return a ref the added element
    Entry& entry = entries.back(); // obtain a ref to the added element
    entry.list.push_back(0);
    cout << "prep " << entry.list.size() << "\n";
}

如果您确实Entry在将其添加到 之前创建和操作entries,您也可以这样做,然后将std::move其添加到entries.

void prep()
{
    Entry entry;
    entry.list.push_back(0);
    cout << "prep " << entry.list.size() << "\n";
    entries.push_back(std::move(entry)); // moving is a lot cheaper than copying
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在另一个列表内的列表中添加元素?

Javascript从另一个对象向一个对象添加元素

引用另一个字段中向量元素的结构

从另一个类向数组添加元素

从另一个运行空间向表单添加元素

在另一个元素之前添加元素

在另一个指向结构的指针内访问结构的指针内的元素

包含另一个向量的结构向量

另一个结构中的前向声明结构的数组

在另一个结构内创建结构数组

如何将结构添加到来自另一个类的向量?

结构中的指针指向另一个结构

访问另一个结构中的结构字段

另一个结构中的结构 Solidity

如何将一个结构数组的所有元素添加到另一个结构数组中?

如何在C#中PInvoke另一个结构内的结构数组

我想访问 C 中另一个结构字段内的通用结构字段

C ++更改向量内部,结构内部,另一个向量内部的结构的值

向结构数组添加元素

如何通过jQuery中的另一个附加元素访问附加元素

如何将一个结构向量映射或转换为另一个结构向量?

在另一个结构内为一个结构数组分配内存

向字典添加另一个元素

结构中的一个元素可以在C语言中访问其自身的另一个元素吗?

如何在嵌套在Mongoose中另一个数组中的数组中添加元素?

在GO中从一个结构复制到另一个结构

如何在另一个元素之后添加元素?

如何基于R中另一个数组的信息在数组中添加元素?

C# 有没有更好的方法从另一个类的列表中添加元素?