gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:56:38 25 4
gpt4 key购买 nike

我想简单地问您一些我在设计算法中无法解决的问题。
我在问一个纯粹是学习的问题。
我同时搜索了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/

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