首页 > 其他 > 详细

STL中的容器

时间:2019-06-09 15:39:26      阅读:99      评论:0      收藏:0      [点我收藏+]

.vector

前面已经讲了vector创建的方法。现在主要讲他的方法的迭代器等注意事项。

迭代器其实就是广义指针,它可以是指针,也可以是一个可对其执行类似指针的操作-----如解除引用的对象。可以将指针广义化为迭代器,让STL能够为各种不同的容器类(包括那些简单指针无法处理的类)提供统一的接口。每个容器类都定义了一个合适的迭代器,该迭代器的类型是一个名为iterator的typedef,其作用域是整个类。

begin()返回一个指向容器第一个元素的迭代器,end()返回一个表示超过容器尾的迭代器

例如要为vector的double类型规范一个迭代器,可以这样做:

vector<double>::iterator pd//pd an iterator

wector<doublr>scores

可以用迭代器pd执行这样的操作:

pd=scores.begin();

*pd=22.3;

pd++;

迭代器的行为就像是指针,c++11有自动类型推断功能;

例如:可以用

auto pd=scores.begin();来代替vector<double>::iterator pd=scores.begin();

可以用以下代码来显示容器内容:

for(pd=scores.begin();pd!=scores.ends();pd++)

cout<<*pd;

需要添加元素的话 只需要v.push_back();即可

需要删除数组的元素的话,使用v.erase(v.begin()+1)

它可以删除一段区间的所有元素。v.erase(v.begin()+1,v.begin()+5); 删除的是下标1,2,3,4的元素。并没有删除下标为5的元素,这一点需要注意!删除的是到v.begin()+5前一个元素为止的。

 

插入元素的话  使用v.insert(v.begin(),1);在第零个元素前面插1

 

 

v.insert(v.begin()+2,2);在第二个元素前插2

 

v.insert(v.end(),1000);注意 这个是在最后一个元素后面插的1000,而并不是最后一个的前面。大家可以自己自己试试。

v.size();元素的个数

v.clear();清除所有元素

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>::iterator it;
    vector<int >  v;
    int i;
    for(i=0;i<10;i++)//添加10个元素 1,2,3....
    {
        v.push_back(i);
    }
    for(it=v.begin();it!=v.end();it++)//遍历一下整个数组
    cout<<*it<<" ";
    cout<<endl;
     v.erase(v.begin()+1);//删除的是第一个元素(下标从0开始)
                        // 也就是1 ,所以现在是0,2,4...9
    v.insert(v.begin()+1,1);//把删除的再加进去
    v.erase(v.begin()+1,v.begin()+4);//删除的第1,2,3 的元素共三个元素
    //也就是剩下的是 0,4,5,6,7,8,9
    for(it=v.begin();it!=v.end();it++)//遍历一下整个数组
    cout<<*it<<" ";
    cout<<endl;    
    cout<<v.size()<<endl;//看一下数组的大小
    v.clear();
    cout<<v.size()<<endl;
    return 0;
 }

 1.push_back   在数组的最后添加一个数据
2.pop_back    去掉数组的最后一个数据
3.at                得到编号位置的数据
4.begin           得到数组头的指针
5.end             得到数组的最后一个单元+1的指针
6.front        得到数组头的引用
7.back            得到数组的最后一个单元的引用
8.max_size     得到vector最大可以是多大
9.capacity       当前vector分配的大小
10.size           当前使用数据的大小
11.resize         改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve      改变当前vecotr所分配空间的大小
13.erase         删除指针指向的数据项
14.clear          清空当前的vector
15.rbegin        将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend          将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty        判断vector是否为空
18.swap         与另一个vector交换数据

STL中的容器

原文:https://www.cnblogs.com/flyljz/p/10993518.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!