学习C++之STL:vector存放自定义数据类型及迭代器的迭代器

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;
//必须加括号!!!

最后附上代码执行结果:
输出结果

在这里插入图片描述

在这里插入图片描述

发布了17 篇原创文章 · 获赞 36 · 访问量 489

猜你喜欢

转载自blog.csdn.net/qq_44643644/article/details/104798280