vector不仅可以存放内置数据类型,也可以存放自定义数据类型。接下来简单举例:
1.创建容器
//首先自定义数据类型
class Person{
public:
string name;
int age;
Person(string Name,int Age)
{
name=Name;
age=Age;
};
//接下来创建容器
vector<Person> p;
2.存放数据
//先创建几个对象
Person p1("aa",10);
Person p2("bb",20);
Person p3("cc",30);
//存入数组p
p.push_back(p1);
p.push_back(p2);
p.push_back(p3);
3.访问元素
说到访问就不得不提到迭代器iterator,它的本质其实是指针,所以用它来访问元素中的成员,有两种方法:
解引用:(*it)的数据类型为vector尖括号中的type
vector<Person>::iterator it=p.begin();
cout << (*it).name <<" "<< (*it).age<<endl;//输出p[0]
学习结构体时用结构体指针访问数据的方法:用->指向要访问的成员
it++;
cout<<it->name<<" "<<it->age<<endl;//输出p[1]
最后来总结拓展一下这次的内容:
迭代器的本质是指针,且vector的迭代器解引用后是type型数据。
vector可以存放自定义数据类型的指针。
接下来就这两点简单举例:
//创建存储自定义数据类型的指针的容器
vector<Person*> P;
//存储数据
P.push_back(&p3);
//定义迭代器
vector<Person*>::iterator pit=P.begin();//*pit为Person*类型
//访问方式1
cout<<(*(*pit)).name<<" "<<(*(*pit)).age<<endl;//*(*pit)为Person类型
//必须加括号!!!
//访问方式2
cout<<(*pit)->age<<" "<<(*pit)->name<<endl;
//必须加括号!!!
最后附上代码执行结果: