标准库

Hightlight:

  1. 支持随机访问通过操作符[]
  2. 初始化不需要指定大小,尾端添加元素迅速
  3. 内置函数push_back(),无push_front()
  4. vector< string> svec(10);//调用了默认的构造函数初始化每个元素

基础知识:

  • Vector ----->>> 一个类模板!这点很重要。
  • Vector(类模板) 属于标准库的容器,位于< vector >头文件中。实际上我把它视作为一个动态数组。编译器根据模板创建类或者函数的过程称为实例化。对于类模板来说,我们通过提供一些额外的信息来制定模板到底实例化成什么样的容器。
  •  vector ievc	//默认初始化
    
  •  vector Tiger
    
  •  vector>	file 	//这个额外信息甚至可以为模板
    

关键性的概念:

  • c++对于vector容器所生产的目的就是高效快速的添加元素(我视为对象或者一些基本的数据类型对象),因此在创建这个容器的时候并没有必要说需要去设定其size。因此大多的数的做法首先创建一个空的vector容器对象,然后在运行时期再添加元素。vector的优点是在向量的尾部添加元素十分迅速,但是在中部或者头部添加就比较慢,因为需要移动后方所有的元素。因此在vector中没有成员函数push_front(),但是在deque双端队列有push_front和push_back()。

I. 初始化:

  •  vector v1	//v1这个容器为空,不会执行任何代码
     vector	v2(v1)		//把v1容器中所有的元素全部复制给v2元素,
     //若v1中有对象,不会再执行其构造函数
     vector	v3 = v1	//与上面等价
     vector	v5{a,b,c,d,e,f}		//用a,b,c,d,e,f这几个对象初始化	vector中的元素
     vector v6{"a","I am girl","I am a princess"}; //注意不能是小括号()
     vector ivec(10)		//10个int元素,每个都初始化为0
     vector svec(10)		//10个string对象,每个都是空的string对象(在这里我视为执行了其默认构造函数,经测试确实也如此)
     vector(int) v1(10)		//v1有10个元素,每个元素都为0
     vector(string) v1(10,"Hello World")		//container V1有10个元素,每个元素都被赋值为“Hello World”,
     //如果元素对象的类没有重载赋值运算符“=”,则会报错.string重载了“=”运算符。
    

II. vector中一系列操作:

  •   class  T 
      {
      public:
      	T()
      	{
      		cout << "animals class has been executed!" << endl;
      	}
      	void func()
      	{
      				
      	}
      }
      	T obj_1
      	vector v1(10);
      	v1.push_back(obj_1);	//向container末尾添加元素(对象)
      	v1.empty();			//为空是返回1,否则返回0
      	v1.size();		//返回container的大小(the number of element)
      	v1[5].func()		//可以用数组索引符号[]来确定索引位置,但是只能获取元素,不能添加元素
    

你可能感兴趣的:(c++标准库)