• 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;
    }
    

      

  • 相关阅读:
    解决 Windows 下的 :所选择的任务“{0}”不再存在。若要查看当前任务,请单击“刷新”。
    学习编译更好的 DAO 的技巧
    宇宙的起源演讲全文(斯蒂芬·霍金)
    java對象序列化的兩種使用方法
    Ubuntu硬盘安装与配置(3D效果)
    java異常處理
    [zt]JDBC对数据库的事务操作
    [zt]spring本地事务与JTA事务实现解析
    Debian溫習
    在oracle中增大session數量
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/15424002.html
Copyright © 2020-2023  润新知