-2

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

struct data{

  int times;
  string name;
};

并将它们存储在向量中

vector<data> data_list;

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

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

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

4

3 回答 3

4

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

data d = {5, "string_value"};
data_list.insert( data_list.begin(), d );
于 2013-09-17T11:53:22.097 回答
3

通过声明

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

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

您正在尝试存储intstd::vector包含data对象中。您需要将数据对象传递给insert函数:

data obj = {5, "name"};             // Declare the data object
                                    // data.times = 5
                                    // data.name  = "name"
data_list.insert( data_list.begin(), obj ); // Insert it
//                                   ^^^
于 2013-09-17T11:55:29.687 回答
0

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

于 2013-09-17T11:57:23.487 回答