使用插入函数c ++在向量内部存储结构

时间:2013-09-17 11:51:15

标签: c++ c++11 vector struct insert

我目前正在尝试编写一个程序,该程序应该将来自cin的传入数据存储到具有struct-type元素的向量中。

struct data{

  int times;
  string name;
};

并将它们存储在矢量

vector<data> data_list;

我遇到的问题是使用insert函数将它们存储在向量中的语法。

我尝试过data_list.insert(data_list.begin(),5);

用于在第一个索引处存储int值5但它不起作用。有什么建议吗?

3 个答案:

答案 0 :(得分:4)

由于您的向量包含data个元素,因此您需要将data对象传递到insert()函数,例如:

data d = {5, "string_value"};
data_list.insert( data_list.begin(), d );

答案 1 :(得分:3)

宣布

vector<data> data_list;
//     ^^^^

您明确表示data_list将存储data对象。

您正试图将int存储在包含data对象的std::vector内。您需要将数据对象传递给insert函数:

data obj = {5, "name"};             // Declare the data object
                                    // data.times = 5
                                    // data.name  = "name"
data_list.insert( data_list.begin(), obj ); // Insert it
//                                   ^^^

答案 2 :(得分:0)

规范/正确的方法是定义std::istream& operator >>(std::istream& in, data& d),然后使用输入迭代器初始化或分配矢量。这意味着,不要使用insert,使用输入迭代器(或vector :: push_back)对整个序列使用vector :: assign。