1、从vector中删除多个元素:

#include <iostream>
#include <vector> int main()
{
std::vector<int> vect;
for(int i = ; i <= ; i++)
{
vect.push_back(i);
} ///*
int size = vect.size();
for(unsigned int i = ; i < size;)
{
if(vect[i] % == )
{
vect.erase(vect.begin() + i);
size--;
}
else
{
i++;
}
}
//*/
/*
auto it = vect.begin();
while(it != vect.end())
{
if(*it % 2 == 1)
{
vect.erase(it);
}
else
{
it++;
}
}
*/ for(auto& item : vect)
{
std::cout<<"item:"<<item<<std::endl;
}
int main()
{
std::vector<int> vect;
for(int i = ; i <= ; i++)
{
vect.push_back(i);
} ///*
int size = vect.size();
for(unsigned int i = ; i < size;)
{
if(vect[i] % == )
{
vect.erase(vect.begin() + i);
size--;
}
else
{
i++;
}
}
//*/
/*
auto it = vect.begin();
while(it != vect.end())
{
if(*it % 2 == 1)
{
vect.erase(it);
}
else
{
it++;
}
}
*/ for(auto& item : vect)
{
std::cout<<"item:"<<item<<std::endl;
}
}

std::vector可以越界访问,如以下代码会输出0,而不会抛出异常。应该是由vector建立时的容量决定的。

#include <iostream>
#include <vector> int main()
{
std::vector<int> vect;
vect.push_back();
vect.push_back();
std::cout<<vect[]<<std::endl;
}

定义一个返回引用的函数,但如果接收的类型没有定义为引用类型,则仍会是复制,auto也是复制。如下:

#include <iostream>
#include <vector> class Test
{
Test(){};
public:
static Test& Instance()
{
static Test _instance;
return _instance;
}
std::vector<int>& get_vect()
{
return vect;
} std::vector<int> vect;
}; int main()
{
Test::Instance().vect.push_back();
Test::Instance().vect.push_back(); std::vector<int> vect = Test::Instance().get_vect(); //复制
//std::vector<int>& vect = Test::Instance().get_vect(); //引用 vect.push_back();
vect.push_back(); for(auto item : Test::Instance().vect)
{
std::cout<<item<<std::endl;
}
}

STL删除元素的更多相关文章

  1. STL容器删除元素的陷阱

    今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...

  2. STL中用erase()方法遍历删除元素 .xml

    pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9; ...

  3. STL中用erase()方法遍历删除元素

    STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.set.map).在使用erase方法来删除元素时 ...

  4. STL 中 使用迭代器删除元素的问题

    在vector中删除,大家都知道,直接erase的话,这种写法很有问题.因为erase(iter)之后iter指针就变成野指针了,此时继续iter++就会出问题. for(auto iter = v. ...

  5. c++之STL容器删除元素

    1.删除容器中特定值的元素 如果是容器vector,string,,deque,使用erase-remove 例如:erase-remove 注:因为container没有remove,contain ...

  6. STL进阶--删除元素

    删除元素 从vector或deque删除元素 vector<int> vec = {1, 4, 1, 1, 1, 12, 18, 16}; // 删除所有的1 for (vector< ...

  7. STL容器迭代过程中删除元素技巧(转)

    1.连续内存序列容器(vector,string,deque) 序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素. vector<in ...

  8. 如何在遍历中使用 iterator/reverse_iterator 删除元素

    如何在遍历中使用 iterator/reverse_iterator 删除元素 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循“署名-非商业用途-保持一致”创作公 ...

  9. STL删除vector或list的方法及注意的问题

    删除vector中的元素 1.删除指定的所有对象 STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除.若要真正移除,需要搭配使用erase().例子: vector ...

随机推荐

  1. codeforces 723E:One-Way Reform

    Description There are n cities and m two-way roads in Berland, each road connects two cities. It is ...

  2. css选择器([class*=" icon-"], [class^=icon-] 的区别)

    官方解释: [attribute^=value],a[src^="https"],选择其 src 属性值以 "https" 开头的每个 <a> 元素 ...

  3. PhpStorm PHP开发神器

    链接:http://pan.baidu.com/s/1b4Vwjs 密码:c5uh

  4. asp.net接收ajax请求参数时为空的现象

    如题,如果使用ajax请求asp.net后台时,如果使用jquery时,默认是添加了请求头,使后台能识别,并能通过Request对象进行获取. 但是如果你使用的是window.XMLHttpReque ...

  5. 组合数取模Lucas定理及快速幂取模

    组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1)  , 此时较简单,在O(n2)可承受的情况下组合数的计算可以 ...

  6. HDU 1007 Quoit Design

    传送门 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

  7. [转]vim编辑器---批量注释与反注释

    转 在使用vim编写代码的时候,经常需要用到批量注释与反注释一段代码.下面简要介绍其操作. 方法一 块选择模式 插入注释: 用v进入virtual模式 用上下键选中需要注释的行数 按Control+v ...

  8. BZOJ1577 USACO 2009 Feb Gold 1.Fair Shuttle Solution

    权限题,不给传送门啦!在学校OJ上交的.. 有些不开心,又是一道贪心,又是一个高级数据结构的模板,又是看了别人的题解还写崩了QAQ,蒟蒻不需要理由呀. 正经题解: 首先,我们可以由「显然成立法」得出, ...

  9. 之前总结的今天给大分享一下iOS

    退回输入键盘 苹果 ios 开发一年的工作笔记 - (BOOL) textFieldShouldReturn:(id)textField{ [textField resignFirstResponde ...

  10. boolean 和 Boolean 类型数据的差别

    工作中遇到页面传递布尔类型的数据问题,需要在代码中判断不能为null,就此思考一下,boolean和Boolean之间的区别?boolean是基本数据类型Boolean是它的封装类,和其他类一样,有属 ...