C++ vector容器回顾

一、概述

  案例:练习vector容器(基本数据类型、自定义类型、容器嵌套容器),并输出vector容器中的内容

  开发工具:sublinetext

二、示例图片

三、示例代码

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>//标准算法头文件

using namespace std;

//原生指针也是迭代器
void test1(){
	int arr[5]  = {1,2,3,4,5};
	int *p = arr;
	for(int i=0;i<5;i++){
		//此处P++代表地址+1,用*取值
		cout << "p:"<<*(p++)<<endl;
	}
}
void myPrint(int val){
	cout <<val<<endl;
}
/**
 * 测试vector
 * */
void test2(){
	vector<int> v;//创建vector容器,容器中存放的内容为int类型
	//插入元素
	v.push_back(10);
	v.push_back(30);
	v.push_back(20);

	//遍历元素
	vector<int>::iterator itBegin = v.begin();//v.begin()起始迭代器,指向容器中第一个数据
	vector<int>::iterator itEnd = v.end();//v.end()结束迭代器,指向容器中最后一个元素的下一个位置
	cout<< "第一种遍历方式:"<<endl;
	while(itBegin!=itEnd){
		cout<<*itBegin<<endl;
		itBegin++;
	}

	cout<<"第二种遍历方式:"<<endl;

	for(vector<int>::iterator it = v.begin();it!=v.end();it++){
		cout << *it<<endl;
	}

	cout<< "第三种遍历"<<endl;

	for_each(v.begin(),v.end(),myPrint);

}

//自定义数据类型
class Person{
public:
	string m_name;
	int m_age;
	Person(string name,int age){
		this->m_name = name;
		this->m_age = age;
	}
};

void test3(){
	vector<Person> v;
	Person p1("tony",30);
	Person p2("luoluoyang",3);
	Person p3("kiki",18);

	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);

	for(vector<Person>::iterator it=v.begin();it!=v.end();it++){
		cout << "name:"<<it->m_name<<",age:"<<it->m_age<<endl;
	}
}

//存放自定义数据类型指针
void test4(){
	vector<Person*> v;
	Person p1("tony",30);
	Person p2("luoluoyang",3);
	Person p3("kiki",18);

	v.push_back(&p1);
	v.push_back(&p2);
	v.push_back(&p3);

	for(vector<Person*>::iterator it=v.begin();it!=v.end();it++){
		cout<< "name:"<<(*it)->m_name<<", age:"<<(*it)->m_age<<endl;
	}
}

//容器嵌套容器
void test5(){
	vector<vector<Person>> vv;
	vector<Person> v1;
	vector<Person> v2;
	vector<Person> v3;
	//添加数据
	Person p1("tony",30);
	Person p2("luoluoyang",3);
	Person p3("kiki",18);

	//将内容放入容器
	v1.push_back(p1);
	v2.push_back(p2);
	v3.push_back(p3);
	//将小容器放入大容器内
	vv.push_back(v1);
	vv.push_back(v2);
	vv.push_back(v3);

	//输出容器内容
	for(vector<vector<Person>>::iterator its = vv.begin();its!=vv.end();its++){
		
		for(vector<Person>::iterator it = its->begin();it!=its->end();it++){
			cout<< "name:"<<it->m_name<<", age:"<<it->m_age<<endl;
		}
	}
}

/**
 * 程序的入口main方法
 * */
int main(int argc, char const *argv[])
{
	// test1();
	// test2();
	// test3();
	// test4();
	test5();
	return 0;
}

  

原文地址:https://www.cnblogs.com/tony-yang-flutter/p/15424002.html