vector中使用迭代器注意事项

原创 2016年05月31日 09:51:12

1.使用iter++;和++iter;两种方式遍历的次数是相同的,但在STL中效率不同。前++返回引用,后++返回一个临时对象,因为iterator是类模板,使用 iter++这种形式要返回一个无用的临时对象,而it++是函数重载,所以编译器无法对其进行优化,所以每遍历一个元素,你就创建并销毁了一个无用的临时对象。

2.使用迭代器遍历时添加删除元素,可使用以下格式:

for(iter = trial.begin(); iter != trial.end(); )
	{
		if((*iter)->value == min_phi)
		{
			new_ind = 99; new_phi = 99; new_dphi = 99;
			Elem * elem = new Elem(new_ind, new_phi, new_dphi);
			trial.push_back(elem);
			iter = trial.erase(iter);
		}
		else
		{
			cout << "ind = " << (*iter)->img_ind << "  phi = " << (*iter)->value << "  dphi = " << (*iter)->dvalue << endl ;
			iter++;
		}
	}
需要注意的是,这样push_back进去的元素放在末尾,因此也会在遍历中被执行。因此,如果new_phi的值等于min_phi,将会变成死循环。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

泛型编程使用gcc编译器时的两个注意事项:关于typename和迭代器

其实,我想说的是,在使用模板类时要注意一点,即何时必须使用typename而不是class来指定模板类型形参。其实在C++神作《C++ Primer (特别版)》的第16章“模板和泛型编程”中已经说得...

正确使用迭代器注意事项

正确使用迭代器注意事项

STL基础2:模版迭代器的几点注意事项

以map容器为例: 第一:前置++和后置++的区别 1.使用typedef定义map容器的迭代器 typedef map::const_iterator CIT; 2.定义迭代器对象CIT ci...

C++迭代器和标准库算法的注意事项——个人笔记

加油奋斗中.... 最近在看C++ Primer 第四版,陆续记一些自己觉得重要和平时出错过的地方: 1.用于指定范围的两个迭代器实参类型必须完全相同,不能无意间一个用const_iterator,而...

用迭代器实现二分查找&3.4.2练习(迭代器中.end()的注意事项)

1.用迭代器实现二分查找 #include #include #include using namespace std; int main() { int cnt = 0; vecto...

使用vector容器存储动态申请内存变量的注意事项

初次接触vector的同学可能会因为方便而放弃使用new/delete、malloc/free等动态内存申请方式,当需要用到一个不确定空间大小的变量时,可以直接定义 vector vecINum; v...

boost.python vector_indexing_suite 使用注意事项

今天使用boost.python封装一个vector,出现了错误。 代码大致如下: class Point { public: Point( double xt , double yt ):...

Android Studio使用Vector Asset的注意事项

Vector是Android 5.0之后新增加的一项特性,默认只支持Android 5.0以上的设备。之后会说如何兼容到Android 5.0之前的设备。1、Android Studio创建Vecto...

vector的所有函数和使用的注意事项

1、构造函数:        (1)vector        (2)vector        (3)vecto...

分割器使用注意事项

  • 2014-05-22 20:56
  • 31KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)