C++ - 容器(container)的erase()函数

容器(container)的erase()函数

本文地址: http://blog.csdn.net/caroline_wendy/article/details/23996013

容器(container)erase()函数, 是删除一个元素, 会移动迭代器的指针,
指向下一个元素;

迭代器(iterator)是一种指针, 赋值是传递的地址, 指向同样的元素;

代码:

/*
 * test.cpp
 *
 *  Created on: 2014.04.18
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <iostream>
#include <vector>

using namespace std;

int main() {
	std::vector<int> vi = {1, 6, 6, 3};
	std::vector<int>::iterator iter1;
	std::vector<int>::iterator iter2;

	//少删除了一个6
	for (iter1 = vi.begin(); iter1 != vi.end(); ++iter1) {
		if (6 == *iter1) {
			iter2 = iter1;
			vi.erase(iter2);
			//--iter1;
		}
	}

	std::cout << "vector size is : " << vi.size() << std::endl;
	for (iter1 = vi.begin(); iter1 != vi.end(); ++iter1) {
		std::cout << *iter1 << " ";
	}
	std::cout << std::endl;

	return 0;
}

输出:

vector size is : 3
1 6 3

C++ - 容器(container)的erase()函数,布布扣,bubuko.com

时间: 2024-12-15 06:42:58

C++ - 容器(container)的erase()函数的相关文章

C++ - 使用copy函数打印容器(container)元素

使用copy函数打印容器(container)元素 本文地址: http://blog.csdn.net/caroline_wendy C++可以使用copy函数输出容器(container)中的元素, 可以代替for循环. 头文件:  #include <algorithm> #include <iterator> 格式:  std::copy(cont.begin(), cont.end(),std::ostream_iterator<Type>(std::cout

multiset容器erase函数的误用

<从缺陷中学习C/C++>第3章库函数问题,本章主要介绍库函数的使用中会遇到的问题.使用库函数可以降低软件开发的难度,提高代码编写的效率.本节为大家介绍multiset容器erase函数的误用. AD: 51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 3.16  multiset容器erase函数的误用 代码示例 int main(){ multiset <int> c1; c1.insert(3); c1.insert(2); c1.insert(3); c

C++中erase函数的使用,可以用来删除内存擦除

erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator position );(3)iterator erase ( iterator first, iterator last );也就是说有三种用法:(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符(2)erase(position);删除position处

map中erase函数的使用

STL的map表里有一个erase方法用来从一个map中删除掉指令的节点eg:map<string,string> mapTest;typedef map<string,string>::iterator ITER; ITER iter=mapTest.find(key);mapTest.erase(iter); 像上面这样只是删除单个节点,map的形为不会出现任务问题,但是当在一个循环里用的时候,往往会被误用,那是因为使用者没有正确理解iterator的概念.像下面这样的一个例子

map 和 vector 的erase函数说明

1. map的erase函数使用 这里首先要注意,C++针对map的erase函数有不同的函数原型,这往往是出现问题的关键所在.根据参考文献1: 在C++98中: ? 1 2 3 4 5 (1) void erase (iterator position); (2)size_type erase (const key_type& k); (3)void erase (iterator first, iterator last); 在C++11中: ? 1 2 3 4 5 (1)iterator 

C++ - 复制容器(container)的元素至另一个容器

复制容器(container)的元素至另一个容器 本文地址: http://blog.csdn.net/caroline_wendy C++复制容器(container)元素, 可以使用标准库(STL)的copy()和copy_n()函数. 函数样式: OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result) 代码: /* * main.cpp * * Created on: 2014

STL容器中的erase函数调用问题

自我感觉,erase函数返回一个迭代器,指向被删除元素的下一个位置,不是很合理. 啥也不说,直接上代码: int findNum = 2;    int array[] = { 1, 2, 2, 4, 5, 6 };    vector<int> ivec(array, array + sizeof(array) / sizeof(*array));    for (vector<int>::iterator iter = ivec.begin(); i != ivec.end()

正确使用stl vecotr erase函数

erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素. 返回值是指向删除的最后一个元素的下一位置的迭代器 Parameters All parameters are of member type iterator, which in vector containers are defined as a random access iterator type. position Iterator pointing to a single element to

C++中string erase函数的使用

erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator position );(3)iterator erase ( iterator first, iterator last );也就是说有三种用法:(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符(2)erase(position);删除position处