结构向量的初始化
我想知道如何使用push_back方法将值添加到结构向量中 
 struct subject { string name; int marks; int credits; }; vector<subject> sub; 
那么现在如何添加元素呢?
我有函数初始化string名称(主题名称)
 void setName(string s1, string s2, ...... string s6) { // how can i set name too sub[0].name= "english", sub[1].name = "math" etc sub[0].name = s1 // gives segmentation fault; so how do I use push_back method? sub.name.push_back(s1); sub.name.push_back(s2); sub.name.push_back(s3); sub.name.push_back(s4); sub.name.push_back(s6); } 
函数调用
 setName("english", "math", "physics" ... "economics"); 
	
创buildvector,push_back元素,然后修改它:
 struct subject { string name; int marks; int credits; }; int main() { vector<subject> sub; //Push back new subject created with default constructor. sub.push_back(subject()); //Vector now has 1 element @ index 0, so modify it. sub[0].name = "english"; //Add a new element if you want another: sub.push_back(subject()); //Modify its name and marks. sub[1].name = "math"; sub[1].marks = 90; } 
你不能用[#]访问一个向量,直到在该索引的向量中存在一个元素。 这个例子填充[#],然后修改它。
如果你想使用新的当前标准,你可以这样做:
 sub.emplace_back ("Math", 70, 0); 
要么
 sub.push_back ({"Math", 70, 0}); 
 这些不需要默认构buildsubject 。 
 您不能通过下标访问空向量的元素。 
 在std::vector上使用[]运算符时,总是检查向量是否为空且索引是否有效。 
 如果不存在元素, []不会添加元素,但如果索引无效,则会导致未定义的行为 。 
 你应该创build一个你的结构的临时对象,填充它,然后将其添加到vector,使用vector::push_back() 
 subject subObj; subObj.name = s1; sub.push_back(subObj);