stl--vector容器,deque,stack,queue

定义容器:

    vector< int >   v1 ;

 将数据装入容器:    v1.push_back(1) ;

返回容器元素个数:v1.size() 

 取头部元素:v1.front();取尾部元素:  v1.back()

头部赋值 v1.front() = 11 ,   尾部赋值  v1.back() = 13 ;  它们可以作为“左值 ”是因为函数返回的是引用。

删除容器尾部元素: v1.pop_back();

vector使用数组下标的形式赋值时需要在定义时为vector分配内存空间。

    vector<int>  v1(10) ;  即包含10个元素。 

    vector<int> v2(v1.begin() , v1.begin()+2) ;

迭代器:  .begin()指的是第一个元素位置,  .end()指的是最后一个元素后面

正向遍历: iterator    对应有 begin()   end() 

逆向遍历: 使用 reverse_iterator   对应有 rbegin()  rend()

区间删除

v1.erase(v1.begin(),v1.begin()+3) 删除前三个;

删除容器中所有的元素‘c’

for(vector<int>::iterator it = v1.begin() ; it !=v1.end() ;  )

 {

    if ( *it == 'c')

        {  v1.erase(it)   ;}

else {   it++ ;     }

}    

vector 头插    v1.insert(v1.begin() , 100 );   vector尾插   v1.insert(v1.end(), 200) ; 

                 

deque 与vector基本类似,只不过它是双端数组,也叫双端队列,即既可从尾部插入删除元素,也可头部插入删除元素。

   obj.push_back   pop_back ;

   obj.push_front  pop_front ; 

求解某个值在deque中的索引。

  deque<int>::iterator it = find(d1.begin(),d1.end(),-2)

 如果it不是d1.end() ,则可以输出下标, cout << distance(d1.begin(),it) ;


C++里栈的实现用stack  ,先进后出

   stack<int>  s1 ;

   s1.push(1) ;   s1.pop(); s1.top().  s1.size()   s1.empty() ;


queue,队列 , 先进先出

   queue<int>  q1;

   q1.push(1) ;   q1.pop(); q1.front().  q1.size()   q1.empty() ;

                    


猜你喜欢

转载自blog.csdn.net/u013565071/article/details/79477798
今日推荐