精华内容
下载资源
问答
  • C++里面的容器是个比较复杂的东西,我这篇只说vector容器怎么使用,详细的网搜。 vector模板类其实是一个动态数组,跟自己new关键字创建数组一样,只不过vector会自动帮我们new和delete管理内存。 使用方法...

    C++里面的容器是个比较复杂的东西,我这篇只说vector容器怎么使用,详细的网搜。

    vector模板类其实是一个动态数组,跟自己用new关键字创建数组一样,只不过vector会自动帮我们用new和delete管理内存。

    使用方法示例:

    #include <iostream>
    #include <assert.h>
    #include <vector>
    using namespace std;
    
    int main() {
    	int a = 1;
    	assert(a != 0);
    	int n;
    	cin >> n;
    	vector<int> vd(n);
    	for (int i = 0; i < n; i++)
    		cin >> vd[i];
    	for (int i = 0; i < n; i++)
    		cout<< vd[i]<<endl;
    
    	return 0;
    }




    要#include <vector>,然后要说明存储元素的类型:vector<int>或vector<char>,然后就可以按普通数组那样使用了。

    这里顺便说一说assert关键字,使用assert要#include <assert.h>,它的作用是断言:assert(判断语句),也就是断言里面的命题成立,如果断言是不成立,程序运行就会崩溃,如果断言成立,则程序继续往下运行。

    展开全文
  • 之前没怎么了解过vector,今天重新看了一遍,感觉了解了很多。以下为总结,比较杂乱。 1. vector的size()返回的类型是vector::size_type类型,使用size_type时,必须指出是在哪里定义的。如vector::size_type; ...

    之前没怎么了解过vector,今天重新看了一遍,感觉了解了很多。以下为总结,比较杂乱。

    1.

    vector的size()返回的类型是vector::size_type类型,使用size_type时,必须指出是在哪里定义的。如vector<int>::size_type;
    虽然vector<int>::size_type就是一个无符号整型,但最好用vector::size_type,规范一点。
    2.容器的大小和容器的容量是有区别的,大小是指元素的个数,容量是分配的内存大小,容量一般等于或大于容器的大小,vector::size()返回容器的大小,vector::capacity()返回容量值,容量多于容器大小的部分用于以防容器的增加使用,每次重新分配内存都会很影响程序的性能,所以一般分配的容量大于容器的大小,若要自己指定分配的容量的大小,则可以使用vector::reserve(),但是规定的值要大于size()值,
    3.vector类模版的所有成员函数。

    1.构造和复制构造函数

    explicit vector ( const Allocator& = Allocator() );

    explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );

    template <class InputIterator>

    vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() );

    vector ( const vector<T,Allocator>& x );

     

    explicit:是防止隐式转换, Allocator是一种内存分配模式,一般是使用默认的

     

    vector<int> A;  //创建一个空的的容器

    vector<int> B(10,100); //创建一个个元素,每个元素值为

    vector<int> C(B.begin(),B.end()); //使用迭代器,可以取部分元素创建一个新的容器

    vector<int> D(C); //复制构造函数,创建一个完全一样的容器

     

    2.析构函数

     ~vector()

    销毁容器对象并回收了所有分配的内存

     

    3.重载了=符号

    vector<int> E;

    E = B; //使用=符号

    B = vector<int>(); //将B置为空容器

     

     

    4. vector::begin()  返回第一个元素的迭代器

      函数原型:

      iterator begin ();  //返回一个可变迭代器

    const_iterator begin () const; //返回一个常量的迭代器,不可变

     

    5.vector::end()  返回的是越界后的第一个位置,也就是最后一个元素的下一个位置

      iterator end ();

    const_iterator end () const;

     

    6.vector::rbegin() 反序的第一个元素,也就是正序最后一个元素

      reverse_iterator rbegin();

    const_reverse_iterator rbegin() const;

     

    7.vector::rend() 反序的最后一个元素下一个位置,也相当于正序的第一个元素前一个位置

      reverse_iterator rend();

    const_reverse_iterator rend() const;

    和vector::end()原理一样

     

    8.vector::size() 返回容器中元素个数

      size_type size() const;

      注意与vector::capacity()的区别

     

    9.vector::max_size()

      size_type max_size () const;

      返回容器的最大可以存储的元素个数,这是个极限,当容器扩展到这个最大值时就不能再自动增大

     

    10. vector::resize()

      void resize ( size_type sz, T c = T() );

      重新分配容器的元素个数,这个还可以改容器的容量,如果重新分配的元素个数比原来的小,将截断序列,后面的部分丢弃,如果大于原来的个数,后面的值是c的值,默认为0

     

    11. vector::capacity()

       size_type capacity () const;

       返回vector的实际存储空间的大小,这个一般大于或等于vector元素个数,注意与size()函数的区别

     

    12. vector::empty()

       bool empty () const;

       当元素个数为0时返回true,否则为false,根据的是元素个数而不是容器的存储空间的大小

     

     

    13. vector::reserve()

       void reserve ( size_type n );

    重新分配空间的大小,不过这个n值要比原来的capacity()返回的值大,不然存储空间保持不变,n值要比原来的实际存储空间大才能重新分配空间,但是最大值不可以大于max_size的值,否则会抛出异常

     

    14. vector::operator[]  //重载了[]符号

       reference  operator[] ( size_type n );

    const_reference  operator[] ( size_type n ) const;

    实现了下标访问元素

     

    15. vector::at()

       const_reference at ( size_type n ) const;

       reference at ( size_type n );

       在函数的操作方面和下标访问元素一样,不同的是当这个函数越界时会抛出一个异常out_of_range

     

    16. vector::front()

       reference front ( );

    const_reference front ( ) const;

    返回第一个元素的值,与begin()函数有区别,begin()函数返回的是第一个元素的迭代器

     

    17. vector::back()

       reference back ( );

    const_reference back ( ) const;

    同样,返回最后一个元素的值,注意与end()函数的区别

     

    18. vector::assign()

       template <class InputIterator> void assign ( InputIterator first, InputIterator last );

    void assign ( size_type n, const T& u );

    将丢弃原来的元素然后重新分配元素,第一个函数是使用迭代器,第二个函数是使用n个元素,每个元素的值为u。

     

    19. vector::push_back()

       void push_back ( const T& x );

       在容器的最后一个位置插入元素x,如果size值大于capacity值,则将重新分配空间

     

    20. vector::pop_back()

       void pop_back ( );

       删除最后一个元素

     

     

    21. vector::insert()

       iterator insert ( iterator position, const T& x );

       void insert ( iterator position, size_type n, const T& x );

    template <class InputIterator>

    void insert ( iterator position, InputIterator first, InputIterator last );

       插入新的元素,

    第一个函数,在迭代器指定的位置前插入值为x的元素

    第二个函数,在迭代器指定的位置前插入n个值为x的元素

    第三个函数,在迭代器指定的位置前插入另外一个容器的一段序列迭代器first到last

    若插入新的元素后总得元素个数大于capacity,则重新分配空间

     

    22. vector::erase()

       iterator erase ( iterator position );

    iterator erase ( iterator first, iterator last );

    删除元素或一段序列

     

    23. vector::swap()

       void swap ( vector<T,Allocator>& vec );

       交换这两个容器的内容,这涉及到存储空间的重新分配

     

    24. vector::clear()

       void clear ( );

       将容器里的内容清空,size值为0,但是存储空间没有改变

    
    


    展开全文
  • c++中的STL的vector容器

    2019-04-15 22:41:02
    c++中我相信大家经常要用到STL里面的各种容器来...3.容器怎么在遍历的时候删除某元素? 4.容器应该怎么释放掉? 一.分析一下STL里面工作方式 对于内建类型(int float char等),容器的工作方式是纯粹的位拷贝,这...

     c++中我相信大家经常要用到STL里面的各种容器来存放自己的数据,既然我们用的这么频繁那么就相应该有一些疑问?

     1.容器里面什么时候应该存指针?
     2.容器里面什么时候应该存对象?
     3.容器怎么在遍历的时候删除某元素?
     4.容器应该怎么释放掉?

     一.分析一下STL里面工作方式
                  对于内建类型(int float char等),容器的工作方式是纯粹的位拷贝,这里没有什么需要多说的。
    对于自定义的对象,容器容纳了对象(比如通过insert或push_back等),但容器中存放的对象不是你给它们的那个对象,因为两个对象在内存中的位置不一样。此外,当你从容器中获取一个对象时,你所得到的对象不是容器里的那个对象。取而代之的是,当你向容器中添加一个对象(比如通过insert或push_back等),进入容器的是你指定的对象的拷贝。拷进去,拷出来。拷贝是STL的方式。可以通过自己写一个例子打印出地址来看。

    二.存放对象的情况
                 明白了容器的工作方式,那么进一步来讨论容器存放对象和指针在操作过程中的开销。内建类型的数据进行拷贝的方式是位拷贝,自定义类型的数据进行拷贝会调用类的拷贝构造函数,这个函数是每个类都有的,如果类中没有显式的声明那么编译器也会给提供一个默认的拷贝构造函数。如果一个类的数据非常多,或者包含其他复杂自定义类型,那么此时类的拷贝构造的开销是非常大的。此时容器中要是存放的是对象vector,那么一个简单的插入操作的代价也是惊人的,更别说什么排序之类的操作,很容易带来性能上的瓶颈,这个时候就需要在容器中存放对象的指针vector,这样的话就避免了这些多余的拷贝消耗,因为指针就是一个机器字长,拷贝的代价可以忽略不计。


    typedef std::vector ObjectVector;
     
    typedef std::vector PointerVector;
     
    //下面是存贮对象的情况
     
    begin = GetTickCount();
     
    ObjectVector objectVector;
     
    for (int i = 0; i < MAX; i++)
    {
     
    <span style="white-space:pre">    </span>objectVector.push_back(*pCom);
     
    }
     
    end = GetTickCount();
     
    cout << "存放对象消耗的时间:";
     
    cout << end - begin << "毫秒 ";
     
     
     
    //下面是存贮指针的情况
     
    begin = GetTickCount();
     
    PointerVector pinterVector;
     
    for (int i = 0; i < MAX; i++)
     
    {
     
        pinterVector.push_back(pCom);
     
    }
     
    end = GetTickCount();
     
    cout << "存放指针消耗的时间:";
     
    cout << end - begin << "毫秒 ";

    下面的结果是在Release版本下,并且编译器的优化关闭的情况下,这和我们目前的客户端设置一样:
    MAX = 4000

    MAX = 40000

    MAX = 400000

    上面的数据没有用统计学的方法去测试,只是取了一次结果,我测试了多次结果在数量级上是一样的(用上面的数据只是说明拷贝的代价是巨大的,并没有强调必须用指针)。
                   分析完了拷贝的性能消耗,再看看另一个问题,就是声明了一个存放基类对象的容器,如果此时向容器中插入子类的对象,那么子类特有的那些内容就会被无情剥离(slicing)。这是一个很严重的问题。解决的方法还是使用基于指针的容器。

    三.存放指针的情况

                   上面提到的两个问题用指针确实比用对象好,问题不是这么绝对。在上面考虑拷贝消耗的时候有个前提:如果一个类的数据非常多,或者包含其他复杂自定义类型,并且需要大量的使用需要容器内部对象拷贝的操作。如果一个对象中就是几个简单的内建类型,或者干脆就是一个简单的内建类型的数据,那么再用指针可真是得不偿失了,因为使用指针需要程序员去管理内存。完全没有必要为了节省几个int类型的拷贝消耗而去自己去做内存的管理,确实完全没有必要。用指针就需要自己手动的去管理这些指针所指向的内存,stl容器确实可以动态申请内存使自己变大以容纳更多的元素,但这些动态空间存放的是你的指针,而并不是你指针指向的动态内存,你的指针内存当然需要你去管理,如果实在不想做这些管理工作,可以去使用智能指针。

    四.总结一下存指针与对象

    1.stl容器可以存放内建类型、自定义类型、指针类型的元素。

    2.元素如果是内置数据类型,那么就存放数据本身。

    3.元素如果是复杂类型,并且在使用容器的过程中需要容器的元素进行大量的拷贝操作的时候,就要考虑在容器中放入指针;

    4.存放指针容易出现内存的泄露,所以在使用的时候需要考虑清楚,如能接口设计的合理,能保证容器在使用的过程中不进行大量的拷贝工作,在容器中存放对象是最好的了。

    5.使用智能指针是一种两种优点都兼备的,既有指针的操作效率,又避免了自己手动管理内存带来的问题。

    6.指针可以解决派生类对象存放在使用基类实例化的容器中的剥离(slicing)问题。
    在考虑容器中是存放对象还是指针的时候脑子里时刻要想到,我的操作需要容器做多少拷贝工作,这些拷贝操作带来的损耗能否接受,从这个本质问题上把握好了,选择起来就不是问题了,要根据实际情况灵活运用。

    五. STL遍历过程中删除元素

    如果想在容器遍历过程中删除里面某个值时,用迭代器(这是最简单的方法),看下面代码:

     

    std::list< int> List;
    std::list< int>::iterator itList;
    for( itList = List.begin(); itList != List.end(); )
    {
    if( WillDelete( *itList) )
    {
       itList = List.erase( itList);
    }
    else
      itList++;
    }


    或者:

    std::list< int>::iterator itList;
    for( itList = List.begin(); itList != List.end(); )
    {
    if( WillDelete( *itList) )
    {
       List.erase( itList++);
    }
    else
       itList++;
    }

    重点是当删除后就要往后移一位,不然下次遍历到那时,已经不存在,就会报错的。


    六. STL中删除元素释放问题

                   STL中不管是erase或remove都不会释放对象的内存空间,他只是释放了STL里面用来存放这个对象或指针的空间,所以依然需要自己去手动释放,并且释放是有先后顺序的,要先delete 在调用STL里容器对应的erase函数。


     

    list<obj *>m_list;
    list<obj *>::iterator ite;
    for( ite = m_list.begin(); ite != m_list.end(); ++ite)
    {
        delete (*ite);
        ite = m_list.erase(ite);
    }


    总之一条原则, 你 new 的, 你去 delete 释放。不是你 new 的, 就不该你去释放。你往 list 里面插入元素时所需的内存是 list 自己申请的, 那它就会自己释放。但是你存在里面的对象不是他的,他不会管!
    --------------------- 
    作者:虫虫虫虫子 
    来源:CSDN 
    原文:https://blog.csdn.net/ac_huang/article/details/29382629 

    展开全文
  • 如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。所以,还是回到Vector的使用问题上吧。该怎么用?既然Vector是替代了Array,那就拿A...

    前两天有人问我说在3.0 beta2版本里,使用array 后编译出错,其实是因为自beta版本开始,已没有Array,取而代之的是容器:Vector 和 Map

    先说Vector吧。如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。所以,还是回到Vector的使用问题上吧。该怎么用?既然Vector是替代了Array,那就拿Array 和Vector进行对比吧。下面我就以创建 Sprite 精灵对象的容器为例介绍吧1、创建

    先创建两个精灵:

    auto sp1 = Sprite::create("CloseNormal.png");

    sp1->setPosition(Point(100,100));

    this->addChild(sp1,1);

    auto sp2 = Sprite::create("CloseSelected.png");

    sp2->setPosition(Point(100,200));

    this->addChild(sp2,1);

    创建容器

    Alpha:

    auto sp_array=Array::create();

    beta:

    Vectorsp_vec;

    2、将创建好的精灵添加进容器中

    Alpha:

    sp_array->addObject(sp1);

    sp_array->addObject(sp2);

    beta:

    sp_vec.pushBack(sp1);//和 堆栈 一样一样的

    sp_vec.pushBack(sp2);

    3、获得容器中的大小

    Alpha:

    intcount = sp_array->count();

    beta:

    intcount = sp_vec.size();

    4、获得容器中的精灵,并让这些元素都做统一的动作

    Alpha:

    for(inti=0;icount();i++)

    {

    auto sp = (Sprite*)sp_array->getObjectAtIndex(i);

    sp->runAction(MoveTo::create(0.2f,Point(100,100)));

    }

    beta:

    for( auto& e : sp_vec)

    {

    e->runAction(MoveTo::create(0.2f,Point(100,100)));//这种for写法是C++

    11的新特性

    }

    5、删除容器中的精灵

    //如果是要删除容器中最后一个精灵的话:

    Alpha:

    sp_array->removeLastObject();

    beta:

    sp_vec.popBack();

    //如果是直接删除对象:

    Alpha:

    sp_array->removeObject(sp1);

    beta:

    sp_vec.eraseObject(sp1);

    //如果是要删除容器中全部的对象:

    Alpha:

    sp_array->removeAllObject();

    beta:

    sp_vec.clear();

    6、其他

    ”说破不值钱“,其实Vector也就那样啦,恩,那样...最后补充一些其他的用法:

    //a 在容器中的任何一个位置插入对象:

    sp_vec.pushBack(sp1);

    sp_vec.pushBack(sp2);

    //目前的情况是,sp1在容器的第一个位置,sp2在容器的第二个位置,这时候我们要将sp3放入第一个位置:

    sp_vec.insert(0,sp3);//ok

    //b 查找容器中的对象:

    //1、假设不知道容器中是否有sp3这个精灵,这时候可以这样:

    sp_vec.contains(sp3);//如果有,返回true,无返回false;

    //2、已知容器中有sp3这个精灵,想获得它在容器中的位置:

    intpos_int = sp_vec.find(sp3);

    //上面的方法可以获得sp3的位置,但返回的其实是迭代器的地址,你得到的结果可能是45214等等,如果想获得正常需要的位置,可以这样:

    intpos_int = sp_vec.find(sp3) - sp_vec.begin();//ok

    恩,时间不多,先写到这吧。昨晚才去了解beta里的Vector,如果有什么写错的地方或者用的不恰当的地方,敬请告知...

    展开全文
  • Cocos2dx 3.0 过渡篇(八)浅谈容器Vector

    万次阅读 多人点赞 2014-02-13 19:25:14
    前两天有人问我说在3.0 beta2版本里,使用...如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。 所以,还是回到Vector的使用问题上吧。该怎么用
  • [Cocos2d-x v3.x]浅谈容器Vector

    千次阅读 2014-05-31 23:33:23
    转载请注明来自:star... 前两天有人问我说在3.0 beta2版本里,使用array 后编译出错,其实是因为自beta版本开始,已没有Array,取而代之的是容器:Vector 和 Map 先说Vector吧。...如果说C++的vector容器怎么用
  • 关于vector三的人肯定对其一点都不陌生, vector基本能够支持任何类型的对象, 同时是一个可以动态增长数组. 马上就来分析关于vector怎么实现这些功能. vector的简单调用 相信都对vector有一定的认识, 这里我就...
  • vector怎么用

    千次阅读 2018-03-24 12:26:00
    //两种排序方法 #include<iostream>#include<string>#include<vector>using namespace std;...//定义个一个字符串容器 bool lexicographically(){ int i=0; while(i<vec.size()-1...
  • 条目二十三《考虑排序的vector替代关联容器》 在看到这个条目的标题的时候,说实话,我一下子是比较懵逼的。这个结论怎么和数据结构的时间复杂度不一致了? 一般来说,像map,set等关联容器的底层因为是红黑树结构...
  • 在解决“求最大字串”问题时想到了二位数组vector<vector<int>> table,但是不知道怎么对其进行初始化(初始化时指定二维容器的大小),于是网上搜索一番,最终找到了如下一行代码: vector<vector&...
  • 对于顺序容器vector,在一系列的插入元素之后,它里面的元素的顺序会不会被vector重新排列顺序,对于重复插入相同的元素时vector又是怎么处理的。 我们实验说话: 上我的代码 std::vector<int> vec_it; ...
  • cocos3 vector

    2014-12-30 08:01:00
    如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。所以,还是回到Vector的使用问题上吧。该怎么用?既然Vector是替代了Array,那就拿Array 和...
  • STL容器vector

    2019-02-21 18:42:06
    总结 1)vector我们可以理解为 就是一个变成数组。... 3)访问,两种方式,一个给数组一样下标,一种迭代器 4)vi.begin(),vi.end() 还有 6个函数的用法 push_back() pop_back() size() clear() inse...
  • STL顺序容器vector与list

    2017-06-19 11:57:18
    vectro则不同,vector随着元素的增加,空间也会不断增加,用户不需要空间怎么增加。 vector的关键在于:对大小的控制以及重新配置内存时,数据移动的效率问题。 vector迭代器的是Random Access Iterators。...
  • 定义方式:vector<int> a; //二维vector<int>a[100] 在末尾压入容器:a.push_back(x);//二维 a[i].push_back(x) 在末尾弹出容器:a.pop_back(); 清空容器:a.clear(); 查询元素个...
  • Vector的使用

    2016-05-09 17:18:24
    前两天有人问我说在3.0 beta2版本里,使用...如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。所以,还是回到Vector的使用问题上吧。该怎么用...
  • 用vector创建二维动态数组,也就是用容器容器来创建,分析它是怎么使用内存的。
  • 说到C++的容器,我想第一个问题就是什么是容器,为什么要使用容器,若真非要用容器,那怎么使用呢?能想到这些问题,至少证明大家都有很强的探究精神。 目录 [TOC]来生成目录: [TOC] Markdown和扩展...
  • cocos2dx 之Vector

    千次阅读 2014-07-30 11:32:35
    如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。 所以,还是回到Vector的使用问题上吧。该怎么用?既然Vector是替代了Array,那就拿Array 和...
  • 今天需要一个动态的增加或删除多个文件流的功能,于是想把vector和ofstream一起,就像这样: std::vector<ofstream> chtempStream; 但是不行,提示我错误 C2280 引用已删除的函数 然后我试着改成这样 std::...
  • 关于容器函数vector和deque

    千次阅读 2009-04-07 16:56:00
    vector是我最早的stl容器,得也最顺手,它的结构也是清晰易懂.deque就比较神秘一些,也是我最近才开始研究使用的,帮助上提到它的一个最显著的特点就是可以从容器的前端插入成员,而且效率很高.当时觉得很神奇,不...
  • 平常面试过程中问的最多的就是 HashMap,当问到可以保证线程安全的并发容器时,最熟悉的就是ConcurrentHashMap,也了解下:我已经学了HashMap,怎么还要会ConcurrentHashMap但是如果问 “有...
  • vector容器基于数组实现,其元素在内存中连续存放,vector容器除了容器尾部之外,在其他任意位置插入或删除元素时,都需要移动该元素后面的所有元素。 2、map什么实现的; map容器指的是关联数组,所谓...
  • 前两天有人问我说在3.0 beta2版本里,使用...如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。 所以,还是回到Vector的使用问题上吧。该怎么用
  • Cocostudio3.0 浅谈容器

    2014-04-28 14:12:39
    如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。 所以,还是回到Vector的使用问题上吧。该怎么用?既然Vector是替代了Ar
  • 如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。 所以,还是回到Vector的使用问题上吧。该怎么用?既然Vector是替代了Array,那就拿Array 和...
  • 我很困惑,因为我读到的所有内容都说容器类是诸如java.util.Vector,java.util.Hashtable和java.util.HashSet之类的东西。 我感觉到他在这个术语来表示其他含义,甚至可能只是表示一个愚蠢的StockQuote类。 我...
  • 用vector存放函数指针~

    2015-08-12 10:54:08
    因为之前没怎么用过函数指针,所以花时间简单的测试了下。 功能就是写加减乘除四个函数,将其放到一个vector容器里面然后通过进行循环依次调用。(好无聊)代码如下://编程环境:visual studio 2013+ win7操作系统...
  • 在写C++程序的时候会发现STL是一个不错...还有一个就是容器,你会发现要是自己写一个链表、队列,或者是数组的时候,既要花时间还要操心怎么去维护,里面的指针啊,内存够不够啊,长度问题,有没有可能溢出啊等等一

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 176
精华内容 70
关键字:

vector容器怎么用