基本知识:

    66)vector基础总结-LMLPHP

1)vector 样子  其实就是一个动态数组:

    66)vector基础总结-LMLPHP

2)vector的基本操作:    

    66)vector基础总结-LMLPHP

3)vector对象的默认构造

    66)vector基础总结-LMLPHP

    对于类  添加到  容器中  要有  拷贝构造函数---》 这个注意

------(1) 利用  v1.size()  来求容器中元素的个数

  

      66)vector基础总结-LMLPHP

 #include<iostream>
#include<vector>
using namespace std;
void hanshu()
{
vector<int> v1;
v1.push_back();
v1.push_back();
v1.push_back();
//这个 size() 就是在求容器的长度
cout<<v1.size()<<endl;
//
}
int main()
{
hanshu();
return ;
}

  

 ---------(2)求这个动态数组的最后一个元素和 第一个元素

    

        

 #include<iostream>
#include<vector>
using namespace std;
void hanshu()
{
vector<int> v1;
v1.push_back();
v1.push_back();
v1.push_back(); //求解第一个元素值
cout<<v1.front()<<endl;
//求解最后一个元素的值
cout<<v1.back()<<endl; }
int main()
{
hanshu();
return ;
}

   ---------(3)修改容器的头部信息

 #include<iostream>
#include<vector>
using namespace std;
void hanshu()
{
vector<int> v1;
v1.push_back();
v1.push_back();
v1.push_back();
//函数返回值作为左值成立,那么是返回一个引用
//修改第一个元素值
v1.front()=; }
int main()
{
hanshu();
return ;
}

----------------------(4)vector赋值

      66)vector基础总结-LMLPHP

  

---------------(5)vector末尾添加或移除数据

      66)vector基础总结-LMLPHP

  --------------(6)存取vector数据

          66)vector基础总结-LMLPHP

    ---(7)vector中的拷贝构造函数,如果没有自己定义  那么就是  浅拷贝,浅拷贝,浅拷贝,浅拷贝,浅拷贝----

      

    主要是由于push_back函数引起的。这个函数会对传递进来的参数进行一次拷贝(调用拷贝构造函数),并将其添加到vector中。如果对象没有拷贝构造函数,编译器会为其生成一个,但是这个编译器生成的拷贝构造函数只是进行了一次浅拷贝,在本例中就是只是复制了str的值,也就是"strend micro"的地址,即拷贝后的对象和原对象的str都是指向同一块内存区域,但是这个拷贝的对象和原对象的析构函数又都会执行,这里就会delete两次。(注意,即使对于一个空类,编译器也会默认生成4个成员函数:默认构造函数,析构函数,拷贝构造函数,赋值函数。)

-------------------(8)迭代器的基本原理

      66)vector基础总结-LMLPHP

----------(9)vector的数据删除

    

 理论知识
 vector.clear(); //移除容器的所有数据
 vec.erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
 vec.erase(pos); //删除pos位置的数据,返回下一个数据的位置。
简单案例:
删除区间内的元素
vecInt是用vector<int>声明的容器,现已包含按顺序的1,,,,9元素。
vector<int>::iterator itBegin=vecInt.begin()+;
vector<int>::iterator itEnd=vecInt.begin()+;
vecInt.erase(itBegin,itEnd);
//此时容器vecInt包含按顺序的1,6,9三个元素。 假设 vecInt 包含1,,,,,,,,,,删除容器中等于3的元素
for(vector<int>::iterator it=vecInt.being(); it!=vecInt.end(); ) //小括号里不需写 ++it
{
if(*it == )
{
it = vecInt.erase(it); //以迭代器为参数,删除元素3,并把数据删除后的下一个元素位置返回给迭代器。
//此时,不执行 ++it;
}
else
{
++it;
}
} //删除vecInt的所有元素
vecInt.clear(); //容器为空
05-28 03:57