如何解决当数组是C ++中的结构成员时,如何创建字符串的动态数组?
struct vehicle {
int len = 0 ;
int *id = new int[len],*price = new int[len] ;
string *model = new string[len],*brand = new string[len] ;
};
void insert(vehicle& v) {
cout << "Enter id\n" ;
cin >> v.id[v.len] ;
cout << "Enter brand,model,and price\n" ;
cin >> v.brand[v.len] >> v.model[v.len] >> v.price[v.len] ;
v.len++ ;
}
int main() {
vehicle v ;
insert(v) ;
cout << v.id[0] ;
delete v.id,v.brand,v.model,v.price ;
}
它总是给出错误的终止,我该如何解决? (其他问题)是最后一行是否必需?(删除语句)。
解决方法
创建
12.12.12.12
127.0.0.0
255.255.256.255
344.19.0.1.
12.255.12.255
138.168.5.193
256.123.256.123
195.45.13.0
8.234.88.55
1334.0.1.234
196.83.83.191
133.133.133.133
8.234.88,55
203.26.27.38
88.173.71.66
136.186.20.9
241.92.88.103
数组时,len
内的 Vehicle
始终为0
。 C ++数组不能像python数组那样工作,不能仅仅调整大小。如果您想要这种附加功能,则应该使用int
。
std::vector
如果您使用结构的向量而不是向量的结构,这一切都将更加简单:
#include <vector>
#include <string>
// using namespace std; Don't do this.
struct vehicle {
std::vector<int> id,price;
std::vector<std::string> model,brand;
};
void insert(vehicle& v) {
int id,price;
std::string brand,model;
std::cout << "Enter id\n" ;
std::cin >> id;
std::cout << "Enter brand,model,and price\n" ;
std::cin >> brand >> model >> price;
v.id.push_back(id);
v.price.push_back(price);
v.brand.push_back(std::move(brand));
v.model.push_back(std::move(model));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。