zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    xtrabackup执行备份要拥有的权限
    CentOS 7 下yum安装xtrabackup备份工具
    MySQL read_only选项的作用
    Linux进程管理命令
    MySQL二进制日志中保存的上下文信息
    MySQLdb的安装
    MySQL The password hash doesn't have the expected format.
    web框架本质
    进程和线程
    good blog
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/15424002.html
Copyright © 2011-2022 走看看