精华内容
下载资源
问答
  • vector是开辟一块空间来作为数组来存放元素(随机迭代器),如果有了pop_front,pop_back这个功能则很容易造成内存碎片,pop_front会造成头部内存产生碎片,pop_back造成尾部内存产生碎片,所以不能像deque(双向迭代器)那样...
    vector是开辟一块空间来作为数组来存放元素(随机迭代器),如果有了pop_front,pop_back这个功能则很容易造成内存碎片,pop_front会造成头部内存产生碎片,pop_back造成尾部内存产生碎片,所以不能像deque(双向迭代器)那样有pop_front, pop_back这样的完全相同的实现.其次才是性能上的问题,vector实现pop_front的功能可以这样:
    
    vector<int> vi;
    vi.push_back(1);
    vi.push_back(2);
    vi.push_back(3);
    vi.erase(vi.begin());//等同于push_front
    
    但是,这样实现的实质是,重新开辟内存放置元素后释放原先的内存,这样做的原因是放置内存碎片,在程序中,如果产生内存碎片则意味着这是内存泄露,是十分危险的一件事情,所以不能在stl中出现
    展开全文
  • deque/list都有这个函数!
  • push_back()、pop_back()、push_front()、pop_front 二. insert之一. 例1: //小问学编程 #include #include #include #include using namespace std; int main() { list<int> ilist{15,37,94,50,73,58,28,98}; ...

    一. push_back()、pop_back()、push_front()、pop_front

    在这里插入图片描述

    二. insert之一.

    在这里插入图片描述

    在这里插入图片描述
    例1:

    //小问学编程
    #include <functional>
    #include <iostream>
    #include <list>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
        list<int> ilist{15,37,94,50,73,58,28,98};
        list<int>::iterator it=ilist.begin();
        ++++it;
        int ival=6;
    
        while(it!=ilist.end())
        {
            if(*it>=ival)
            {
                ilist.insert(it,ival);
                break;//插入成功
            }
            ++it;
        }
    
        if(it==ilist.end())
            ilist.push_back(ival);
    
        for (it=ilist.begin();it!=ilist.end();++it)
        {
            cout<<*it<<' ';
        }
    
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    分析:
    在这里插入图片描述

    三. insert之二.

    待更
    例2:

    //小问学编程
    #include <functional>
    #include <iostream>
    #include <list>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
        string sval=("cake");
        list<string> slist{"you","are","my","cake","!"};
        list<string>::iterator it=find(slist.begin(),slist.end(),sval);
    
        slist.insert(it,8,string("best"));
    
        for (it=slist.begin();it!=slist.end();++it)
        {
            cout<<*it<<' ';
        }
    
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    分析:
    在这里插入图片描述

    四. insert之三.

    在这里插入图片描述
    例3:

    //小问学编程
    #include <functional>
    #include <iostream>
    #include <list>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
        int ia1[7]={1,1,2,3,5,55,89};
        int ia2[4]={8,13,21,34};
        list<int> elems(ia1,ia1+7);
    
        list<int>::iterator it=find(elems.begin(),elems.end(),55);
    
        elems.insert(it,ia2+1,ia2+4);
    
        for (it=elems.begin();it!=elems.end();++it)
        {
            cout<<*it<<' ';
        }
    
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述

    五. insert之四.

    在这里插入图片描述
    程序示例参考博文——《Essential C++》笔记之使用Iterator Inserter(插入迭代器)

    六. erase操作

    在这里插入图片描述

    例1:

    //小问学编程
    #include <functional>
    #include <iostream>
    #include <list>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
        list<string> slist{"you","are","my","cake","!"};
        list<string>::iterator it=find(slist.begin(),slist.end(),"cake");
    
        slist.erase(it);
    
        for (it=slist.begin();it!=slist.end();++it)
        {
            cout<<*it<<' ';
        }
    
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    例2:

    //小问学编程
    #include <functional>
    #include <iostream>
    #include <list>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
        list<string> slist{"you","are","my","cake","!"};
        list<string>::iterator it;
        list<string>::iterator it1=find(slist.begin(),slist.end(),"are");
        list<string>::iterator it2=find(slist.begin(),slist.end(),"cake");
    
        slist.erase(it1,it2);
    
        for (it=slist.begin();it!=slist.end();++it)
        {
            cout<<*it<<' ';
        }
    
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述

    展开全文
  • vector中没有push_frontpop_front,只有push_back和pop_back。 vector是开辟一块空间来作为数组来存放元素(随机迭代器),如果有了pop_front,pop_back这个功能则很容易造成内存碎片,pop_front会造成头部内存产生...

    vector中没有push_front和pop_front,只有push_back和pop_back。

    vector是开辟一块空间来作为数组来存放元素(随机迭代器),如果有了pop_front,pop_back这个功能则很容易造成内存碎片,pop_front会造成头部内存产生碎片,pop_back造成尾部内存产生碎片,所以不能像deque(双向迭代器)那样有pop_front, pop_back这样的完全相同的实现 。

    上述红色字体摘自https://blog.csdn.net/A_Eagle/article/details/7370678

    push_back (在末尾添加元素)

    (1)void push_back(const value_type& val)
    //在末尾添加值为val的元素

    (2)void push_back(value_type&& val)
    //在末尾添加值为val的元素,其中&&为右值引用

    pop_back(弹出尾部元素)

    void pop_back()
    //弹出尾部元素

     

    assign(拷贝、赋值操作)

    (1)void assign (InputIterator first, InputIterator last)
    //拷贝[first,last)间的元素至当前vector

     

    (2)void assign(size_type n, const value_type& val)
    //将n个值为val的元素赋值给当前vector

     

    (3)void assign(initializer_list<value_type> il)
    //initializer_list是C++11提供的新类型,用于表示某种特定类型的值的数组,和vector一样,initializer_list也是一种模板类型

     

    例:

    #include<iostream>
    #include<sstream>
    #include<algorithm>
    #include<string>
    #include<cstring>
    #include<iomanip>
    #include<vector>
    #include<cmath>
    #include<ctime>
    #include<stack>
    #include<queue>
    #include<map>
    #define e 2.71828182
    #define Pi 3.141592654
    using namespace std;
    int main()
    {
    	vector<int> v,vv;
    	v.push_back(1);
    	v.push_back(2);
    	v.push_back(3);
    	
    	vv.assign(5,6);
    	for(int i=0;i<vv.size();i++)
    	cout<<vv[i]<<' ';//输出6 6 6 6 6
    	cout<<endl;
    	
    	vv.assign(v.begin(),v.end());
    	for(int i=0;i<vv.size();i++)
    	cout<<vv[i]<<' ';//输出1 2 3
    } 
    展开全文
  • 删除元素 1、c.erase(p); 2、c.erase(b,e);//删除从b到e的所有元素,包括b但不包括e 3、c.clear();//删除所有元素 ...4、c.pop_back() ...注意:c.pop_front只适用于list和deque,因为vector不能从前面取出

    删除元素

    1、c.erase(p);

    2、c.erase(b,e);//删除从b到e的所有元素,包括b但不包括e

    3、c.clear();//删除所有元素

    4、c.pop_back()

    5、c.pop_front()

    注意:c.pop_front只适用于list和deque,因为vector不能从前面取出

    展开全文
  • list和vector的不同在于,vector采用的顺序存储,即vector中的元素像数组一样,一个紧挨着一个存放。 所以vector可以进行随机存取。(通常情况下使用vector是最优的选择)。但是每当从vector中删除一个元素或向vector...
  • Vector

    2014-08-24 21:22:00
    Vector用于存储对象数组 常用方法 1.push_back在数组的最后添加一个数据 2.pop_back去掉数组的最后一个数据 3.at得到编号位置的数据 4.begin得到数组头的指针 5.end得到数组的最后一个单元+1的指针 6.front...
  • vector

    2018-05-17 21:48:00
    红色的为我本次会验证的函数,黑色的以后再看看,以...实验一:验证front,back,data 实验二:empty,size,max_size,capacity,push_back 实验三:pop_back,resize 感想:我还差得挺多,for循...
  • Vector C++自制vector

    2020-07-08 12:09:48
    2.弹出最后一项 v.pop_back() 3.求数组长度 v.size() 4.指向数组第一项的地址 v.begin() ​ | ⚠️这里是2个指针 ​ | 5.指向数组最后一项的地址 v.end() 6.数组第一项的值 v.front() 7.数组最后一项的值 v....
  • list vector

    2013-07-18 21:35:40
    一、双向循环链表list  list是双向循环链表,,每一个元素都知道前面一个元素和后面一...list中提供的成员函数与vector类似,不过list提供对表首元素的操作push_frontpop_front,这是vector不具备的。和vector另一
  • vector介绍

    2021-01-08 23:04:48
    vector介绍 ...2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5.end 得到数组的最后一个单元+1的指针 6.front 得到数组头的引用 7.back 得到数组的最后一个单
  • STL vector

    2018-07-30 12:04:43
    STL vector直接调函数就能实现的操作: 1.追加元素 push_back 2.插入元素 insert(vec.begin()+i , j) 3.删除尾元素 pop_back 4.删除元素 erase(vec.begin()+i) erase(vec.begin()+i,vec.begin()+j)删除[i,j) ...
  • vector list deque

    2019-10-03 19:48:04
    说明: 1.list由双向链表实现的,不支持[]和at()函数,有较快的插入和删除函数,同时提供了sort,...2.deque也是动态数组实现的,和vector相比可以push_front,push_back,pop_front,pop_back;deque和list都没有capa...
  • c++:vector

    2018-10-29 22:35:34
    1. 基本的vector 操作: std::vector&lt;Obj_Result&gt; resultvec; resultvec.resize(0);....pop_front(); .isempty(); 2.pair typedef std::pair&lt;Mat, int&gt; Batch; std::vec...
  • vector 使用下

    2020-12-23 21:05:09
    2、删除最后一个元素 M.pop_back(); 三、数据存取 1、使用数组下标访问 m[1] =1; 2、使用特定访问 m.at(1) 3、使用特定接口返回访问(M.front() 第一元素,M.back()最后一>>> 个元素);
  • Vector用法

    2013-12-27 00:20:48
    Vector用于存储对象数组 常用方法 1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5.end 得到数组的最后一个...
  • C++-vector

    2019-10-10 22:30:35
    vector就像Python里面的列表一样 常用方法 push_back() 在数组的最后添加一个数据 pop_back() 去掉数组的最后一个数据 at() 得到编号位置的数据 begin() 得到数组头的指针 end() 得到数组的最后一个单元+1的指针 ...
  • vector用法

    千次阅读 2010-04-13 16:52:00
    Vector用于存储对象数组 常用方法 1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5.end 得到数组的最后一个单元+1的指针 6....
  • STL VECTOR方法

    2017-08-31 00:30:54
    STL VECTOR方法每次都要查,自己做个记录1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5.end 得到数组的最后一个单元+1的指针 6....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 428
精华内容 171
关键字:

popfrontvector