我在使用矢量在行尾添加元素时遇到了麻烦。
我的结构:
struct process_s {
int type_id;
int line_id;
int product_id;
};
然后我使用:
将其转换为矢量std::vector<process_s> process_v;
我的下一步是填充两行:
process_v.at(1).type_id = 1;
process_v.at(1).line_id = 1;
process_v.at(1).product_id = 2;
和
process_v.at(2).type_id = 1;
process_v.at(2).line_id = 2;
process_v.at(2).product_id = 2;
从现在起,我的目标是获取所有用户输入并从第一行(1)或第二行(2)添加到最后。 一旦获得所有数据,我将使用ODD和EVEN复制它,或者换句话说,我将第一行(1)复制到第三行(3)并将第二行(2)复制到行(4),数字线条也是未知的。
第一个问题是尝试从第一行或第二行添加更多来自用户输入的数据,正在尝试使用它:
process.at(1) = 1
或者
process(1).push_back = 1
从这一点开始,我需要在相应的行上存储所有用户输入,一旦用户完成输入,就写下这样的TXT:
规范适用于此类型(type_id),需要在线(line_id),第一个产品需要(product_id),第二个产品(product_id)等......
这些都不起作用,有人会指出我想要的东西吗?
感谢您的建议
答案 0 :(得分:2)
默认情况下,当您创建矢量时,它是空的,因此您无法引用矢量中的“第一个”或“第二个”元素。
如果你知道你的矢量应该有2个元素,你可以用2的大小初始化它:
std::vector<process_s> process_v(2);
然后你可以填充它:
process_v.at(0).type_id = 1;
process_v.at(0).line_id = 1;
process_v.at(0).product_id = 2;
process_v.at(1).type_id = 1;
process_v.at(1).line_id = 2;
process_v.at(1).product_id = 2;
请注意,向量在C ++中从零开始,因此您需要将第一行称为process_v.at(0)
(或process_v[0]
)
如果你不知道你的矢量有多大,你应该使用push_back
将process_s
添加到你的矢量:
std::vector<process_s> process_v;
process_s p;
p.type_id = 1;
p.line_id = 1;
p.product_id = 2;
process_v.push_back(p);
或者
process_v.push_back(process_s{1,1,2});
或者
process_v.push_back({1,1,2});