将N个元素从用户添加到矢量结束

时间:2014-11-04 12:50:51

标签: c++ arrays vector add

我在使用矢量在行尾添加元素时遇到了麻烦。

我的结构:

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)等......

这些都不起作用,有人会指出我想要的东西吗?

感谢您的建议

1 个答案:

答案 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_backprocess_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});