c++ - c++数据输入并在列表的结构中读回数组

标签 c++ list arraylist struct linked-list

我想简单地问您一些我在设计算法中无法解决的问题。
我在问一个纯粹是学习的问题。
我同时搜索了stackoverflow和Google叔叔,但没有找到合乎逻辑的解决方案。

 struct MyStruct_1
{
    int number[];
};
想象这是一个结构,或者想象其中还有其他一些不是数组的东西。
 struct MyStruct_2
{
    int  id;
    string ModelName;
    int number[];
};

**Insert ==>>>  ID = 1 ModelName = "ModelA" number = { 6,7,8,9, 57 }
Insert ==>>>  ID = 2 ModelName = "ModelB" number = { 3,17,9,28,8 }
*****************************************************************
Update/Delete ==>>>  ID = 2 ModelName = "ModelB" number = { 9 }
Update/Delete ==>>>  ID = 1 ModelName = "ModelA" number = { 57 }
*****************************************************************
Insert/Add ==>>>   ID = ModelName = "ModelA" number = 103**
这样,从一种结构到一种C++语言;
list<MyStruct> demoListe  
当我创建
我的第一个问题:我们如何提供数据输入?
push_back({9,3,65,2});我尝试过,但是收到错误消息。
我的第二个问题:回答数据输入数据的 friend 也可以读取数据吗?

I'd like to thank everyone who will help and lead me to the right solution.

Regards

最佳答案

标准C++中禁止使用灵活数组。您应该改用std::vector:

#include <algorithm>
#include <iostream>
#include <iterator>
#include <list>
#include <vector>
#include <string>

struct MyStruct
{
    int id;
    std::string ModelName;
    std::vector<int> number;
};

int main() {
    // initialized with a few numbers
    MyStruct ms{1, "model", {2,3,4}};

    // push_back a new number
    ms.number.push_back(5);

    // print the numbers
    for(int value : ms.number) {
        std::cout << value << '\n';
    }

    // or make a std::list<MyStruct>
    std::list<MyStruct> demoListe {
        {1, "model_a", {2,3,4}},
        {2, "model_b", {5,6,7,8}}
    };

    // add a model
    demoListe.emplace_back(MyStruct{3, "model_c", {11,22}});

    // add 99 to model_a
    auto ait = std::find_if(demoListe.begin(), demoListe.end(), 
                            [](const MyStruct& ms) { return ms.id==1;} );
    if(ait != demoListe.end())
        ait->number.push_back(99);

    // remove 7 from model_b
    auto bit = std::find_if(demoListe.begin(), demoListe.end(),
                            [](const MyStruct& ms) { return ms.id==2;} );
    if(bit != demoListe.end()) {
        auto seven = std::find(bit->number.begin(), bit->number.end(), 7);
        if(seven != bit->number.end())
            bit->number.erase(seven);
    }

    // print result
    for(const MyStruct& ms : demoListe) {
        std::cout << "id: " << ms.id << " model: " << ms.ModelName << '\n';
        std::copy(ms.number.begin(), ms.number.end(),
                  std::ostream_iterator<int>(std::cout, " "));
        std::cout << '\n';
    }
}

关于c++ - c++数据输入并在列表的结构中读回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59555894/

相关文章:

python - 打印解压缩的列表对象返回空列表

python - 使用 np.unique 从 2 个 numpy 数组中删除成对重复项

Android,ListView测试代码上的空指针异常

java - 谁能告诉我为什么我的更改数量按钮没有更改数量?

c++ - 为什么编译器允许函数返回一个存储为引用的值

c++ - 当可分离线程完成操作时取消分配内存

c# - 如何指定 createfilew 函数获取未缓存的结果?

C++ 标准参数 : multiple calls to va_start

list - 我应该使用空列表还是使其成为选项?

java - 如何从 ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>> 添加值到编辑文本