问题一:
我要在vector中循环删除已排序数据,每次删除最小值。
我是从小到大排列的,那么也就是说,我每次删除vector中的第一个元素,那么请问:
1、在vector中删除第一个元素,是不是会导致后面所有元素都向前移动(象操作数组一样)?这样效率岂不是很低?
2、如果这样的话,我可以把数组从大到小排序,然后每次删除vector的最后一个位置的元素,这样是不是效率会提高很多(因为不要移动元素了)。我以上的理解是否正确?
问题二:
我用一个指针p指向了这个vector,当我循环删除vector中的值,直到vector的size=0,那么这样一来,当循环结束,vector中一个元素都没有了,这样我还是否需要调用delete p来释放vector所占用的空间?为什么?
谁要是直到准确答案,请帮我解惑,谢谢!!!

解决方案 »

  1.   

    1 浼?
    2 鏄殑 ,杩樺彲浠ョ敤list涓嶉渶瑕?杩欎釜鍐呭瓨鏄痸ector鑷繁绠$悊鐨
      

  2.   

    问题一:
       1  的确如你所说,所以在容器头部删除和添加元素较平凡的话,用list效率高些
       2  这样不会移动,但建议用list
    问题二:
       首先,new和delete是成对出现的,没有new何来delete;其次,声明的这个vector是在栈上,最后系统会自动回收的,此指针只是指向它仅此而已,而new和delete是在堆上操作的;最后,一般习惯是最后vector.clear()使它size为0,如果vector中存的是类的话,这样会引起构函数的调用,避免内存泄露
      

  3.   

    问题一:
    排序的移动很要命的。
    使用Vector时,当size超过默认分配大小时,要申请新的内存,也要命;
    不过小型数据类型使用Vector确实方便。
    大型数据类型(类)使用Vector的效率有待质疑。
    问题二:
    Vector已经做到资源安全,但是T的安全就得设计者保证了