我目前正在尝试编写一个程序,该程序应该将来自 cin 的传入数据存储到具有结构类型元素的向量中。
struct data{
int times;
string name;
};
并将它们存储在向量中
vector<data> data_list;
我遇到的问题是使用插入函数将它们存储在向量中的语法。
我试过了data_list.insert(data_list.begin(),5);
用于在第一个索引处存储 int 值 5 但它不起作用。有什么建议么?
由于您的向量包含data
元素,因此您需要将一个data
对象传递给insert()
函数,例如:
data d = {5, "string_value"};
data_list.insert( data_list.begin(), d );
通过声明
vector<data> data_list;
// ^^^^
您明确表示data_list
将存储data
对象。
您正在尝试存储int
在std::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
// ^^^
规范/正确的方法是定义std::istream& operator >>(std::istream& in, data& d)
,然后使用输入迭代器初始化或分配您的向量。这意味着,不要使用插入,对整个序列使用vector::assign,使用输入迭代器(或vector::push_back)。