我目前正在尝试编写一个程序,该程序应该将来自cin的传入数据存储到具有struct-type元素的向量中。
struct data{
int times;
string name;
};
并将它们存储在矢量
中vector<data> data_list;
我遇到的问题是使用insert函数将它们存储在向量中的语法。
我尝试过data_list.insert(data_list.begin(),5);
用于在第一个索引处存储int值5但它不起作用。有什么建议吗?
答案 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。