预留容量的两类方式:

1、不调用默认的构造函数

        vector<int> v;
v.push_back(111);
v.reserve(20);
std::copy(v.begin(), v.end(), ostream_iterator<int>(cout," "));//只能打印出111;

2、调用默认构造函数

        vector<int> v(20);
std::copy(v.begin(), v.end(), ostream_iterator<int>(cout," "));//打印出20个零
         vector<int> v;
     v.resize(20);
     std::copy(v.begin(), v.end(), ostream_iterator<int>(cout," "));//打印出20个零

缩小vector的容量:

         template<class T>
void shrinkCapacity(vector<T>& v)
{
vector<T> temp(v); //copy elements into a new vector
v.swap(temp); //swap internal vector data //swap具有常数时间复杂度,通过交换一些指针完成。
}
        vector<int> v(10);
v.reserve(100);
cout <<"size:"<< v.size()<<"capacity:" << v.capacity() << endl; //10 100 shrinkCapacity(v);
cout << "size:" << v.size() << "capacity:" << v.capacity() << endl; //10 10

将vector当作一般array使用:

只要你需要一个类型为T的数组,就可以采用vector<T>。

        vector<char> c;
c.resize(20); //初始化为‘\0’
strcpy(&c[0], "Hello world");
cout << &c[0] << endl;

循环语句内删除值为x的元素:

        vector<int> ve;
ve.push_back(1);
ve.push_back(2);
ve.push_back(2);
ve.push_back(3);
ve.push_back(4);
ve.push_back(4);
vector<int>::iterator iter;
for (iter = ve.begin(); iter != ve.end();)
{
if (*iter == 4)
iter = ve.erase(iter);
else
++iter; }
cout << "*************" << endl;
copy(ve.begin(), ve.end(), ostream_iterator<int>(cout, " "));

erase返回的是下个元素的位置,内存移动后即是删除元素的位置。

insert返回的是插入元素的位置,即原来当前位置的元素及以后元素全部往后移动,当前位置插入新元素。

最简便删除某个值为x的元素:

ve.erase(remove(ve.begin(), ve.end(), x),ve.end());



Vector的小知识点的更多相关文章

  1. 刚接触Linux,菜鸟必备的小知识点(一)

    身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...

  2. Java学习过程中的总结的小知识点(长期更新)

    Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...

  3. 【转】HTML5的小知识点小集合

    html5的小知识点小集合 html5知识   1.  Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<h ...

  4. AngularJS的小知识点

    小知识点:$scope和$rootScope (1)每次使用ngController指令,都会调用控制器的创建函数,创建出一个控制器对象. (2)每次创建一个控制器对象,AngularJS都会创建一个 ...

  5. js中关于value的一个小知识点(value既是属性也是变量)

    今天在学习input的value值时,发现这么一个小知识点,以前理解不太透彻. [1]以下这种情况是常见情况,会弹出“测试内容” <input type="button" v ...

  6. html5的小知识点小集合

      html5的小知识点小集合 html5知识   1.  Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于< ...

  7. [BS] 小知识点总结-05

    [BS] 小知识点总结-05 1. 不论UIWindow的rootViewController是navC.tabBarC还是VC,也不管modalVC和rootVC中间隔着多少个VC,但是modal出 ...

  8. 一个关于echo的小知识点

    一个关于echo的小知识点     echo一个布尔值时,如果是true,输出1,而如果是false,将什么都不输出! 网上搜的一个解释: 对于数字类型来说,false 确实 是 0, 而对strin ...

  9. easyui中的combobox小知识点~~

    一直使用的easyui中,一些不为人知的小知识点,与君共勉: 1.combobox设置高度:使用panelHeight属性: 2.combobox本身自带“自动补全”功能,但是在浏览器中是有限制的,在 ...

随机推荐

  1. mysql 易忽略点

  2. runtime error (运行时错误)

    比如说: ①除以零 ②数组越界:int a[3]; a[10000000]=10; ③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+10000 ...

  3. HDU 1589 Stars Couple(计算几何求二维平面的最近点对和最远点对)

    Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  4. ThinkPHP CodeIgniter URL访问举例

      ThinkPHP   URL访问:   http://localhost/think/index.php/Home/login/func/[name/syt/password/123/]   ht ...

  5. linux配置禁用启用IPv6

    IPv6被认为是IPv4的替代产品,它用来解决现有IPv4地址空间即将耗尽的问题.但目前,开启IPv6可能会导致一些问题.因此有时我们需要关闭IPv6.下面是IPv6的关闭方法应该适用于所有主流的Li ...

  6. 最大似然估计和最大后验概率MAP

    最大似然估计是一种奇妙的东西,我觉得发明这种估计的人特别才华.如果是我,觉得很难凭空想到这样做. 极大似然估计和贝叶斯估计分别代表了频率派和贝叶斯派的观点.频率派认为,参数是客观存在的,只是未知而矣. ...

  7. caffe安装编译问题-ImportError: No module named caffe

    问题描述 ~/Downloads/caffe$ python Python (default, Dec , ::) [GCC ] on linux2 Type "help", &q ...

  8. dfs 与 剪枝

    http://blog.csdn.net/u010700335/article/details/44095171

  9. Git冲突和解决冲突

    1.产生冲突原因 产生:多个开发者同时使用或者操作git中的同一个文件,最后在依次提交和push的时候,第一个操作的是可以正常提交的,而之后的开发者想要执行pull(拉)和pull(push)操作的时 ...

  10. WIFI学习笔记

    1.关掉网卡:sudo ifconfig eth0 down $ ifconfig -a显示出所有的网卡,down的也可以显示出来,而$ ifconfig只能显示up状态的网卡,最好先停掉网络服务再开 ...