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



我想简单地问你一些我在我正在设计的算法中无法解决的问题。 我问一个纯粹是学习的问题。 我搜索了stackoverflow和Uncle 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 }(;我试过了,但收到一条错误消息。

我的第二个问题:回答数据输入数据的朋友也可以样本读取数据吗?

我要感谢所有将帮助并引导我找到正确解决方案的人。

问候

请注意,这段代码是可以的:

struct st
{
int id;
string s;
};
vector<st> v;
v.push_back({1, "abc"});

但是不能用{}初始化数组,所以使用向量容器:

struct st
{
int id;
string s;
vector<int> v;
};
vector<st> u;
u.push_back({1, "abc", vector<int>{1, 1, 2}});

标准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';
}
}

相关内容

  • 没有找到相关文章

最新更新