STL库容器vector clear函数

来源:互联网 发布:黄海真实故事知乎 编辑:程序博客网 时间:2024/04/26 20:36

STL库容器vector clear函数
clear()函数删除当前vector中的所有元素。

vector<int> v(10,0);int a[10]={1,2,3,4,5,6,7,8,9,10};v.assign(a,a+10);for(int i=0;i<=9;i++)    cout<<v.at(i)<<" ";cout<<endl;v.clear();cout<<"可容纳的元素数量"<<v.capacity()<<endl;for(int i=0;i<=9;i++)    cout<<v.at(i)<<" ";cout<<endl;

则输出:

1 2 3 4 5 6 7 8 9 10 可容纳的元素数量10

然后会报错,因为此时当前vector已没有元素,at函数会报越界,即使可以容纳这么多元素
下面我们再来看另一个程序

vector<int> v(10,0);int a[10]={1,2,3,4,5,6,7,8,9,10};v.assign(a,a+10);for(int i=0;i<=9;i++)    cout<<v.at(i)<<" ";cout<<endl;v.clear();           《--------重新赋值v.assign(a,a+10);for(int i=0;i<=9;i++)    cout<<v.at(i)<<" ";cout<<endl;

这个程序则会输出:

1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 10

它不会报错,只因为重新赋值了
这说明了clear函数只会清除元素,但不会清除这些元素所占的空间

vector<int> v(10,0);int a[10]={1,2,3,4,5,6,7,8,9,10};v.assign(a,a+10);vector<int>::iterator iter;for(int i=0;i<=9;i++)    cout<<v.at(i)<<" ";cout<<endl;v.clear();for(iter=v.begin();iter!=v.end();iter++)    cout<<*iter<<" ";cout<<endl;

这个程序会输出:

1 2 3 4 5 6 7 8 9 10

不会报错,只因为我们使用了迭代器