欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

容器

程序员文章站 2022-06-17 07:53:42
...

  对于C++而言,其实书是看了很多遍的,但是每次看到容器这一章(或者说很多教材就没有这一章)的时候,都只是随便看看,没有真正写代码去实现验证的,所以说,在这里只是初识,到刚才,看到容器、迭代器我就晕乎乎的,但是我不能再晕乎乎下去了,坚决要攻下容器迭代器这一关。下面就慢慢来学习吧....

  容器,我的理解就是一个无限大的盆子,里面可以放很多同类型的东西,你可以往里面放东西,也可以往里面取东西,当然你也可以只是看看里面的东西而已。但是,不同类型的容器,对于东西的存取规则是不一样的,当然,这是以后要说的事情了...

  迭代器,是用来访问、遍历容器的,是为容器而生,每个容器都有一个迭代器。对于迭代器而言,通过不同的方法即可实现对容器的各种操作。

  简单的例子:

#include <list>
#include <vector>
#include <deque>
#include <iostream>

using namespace std;
using std::vector;

int main()
{
	vector<int> v1;//申明一个容器 
	vector<int>::iterator iv1, iv2;//声明两个对应的迭代器 
	int a;
	
	for( int i=0; i<10; i++ ) v1.push_back( i );//往容器里面添加元素 
	iv1 = v1.begin();//获取第一个元素 
	iv2 = v1.end();//获取最后一个元素的下一个元素,代表非法元素,用作哨兵 
	//a = v1.begin();
	//while( !v1.empty() )
	while( iv1!=iv2 )
	{
		//cout << v1[v1.size()-1] << "\n";//通过 下标访问 
		//v1.pop_back();
		cout << *iv1 << "\n";//通过*来访问迭代器所指向的容器元素 
		iv1++;//迭代器自增遍历容器 
	}
	
	{//因为重命名的冲突,偷懒加了个花括号	
		vector<char> v2( 15 );
		vector<char>::iterator iv2;
		for( vector<char>::iterator iv2=v2.begin(); iv2!=v2.end(); iv2++ )
		{
			*iv2 = 'G';
		}
		iv2 = v2.begin();
		while( iv2!=v2.end() )
		{
			cout << *iv2++ ;
		}
		//迭代器不仅有自增,而且可以通过+n或者-n来访问容器元素,只要合法就行 
		for( vector<char>::iterator iv2=v2.begin(); iv2!=v2.end(); iv2+=3 )
		{
			*iv2 = 'b';
		}
		iv2 = v2.begin();
		cout << "\n迭代器增加n:";
		while( iv2!=v2.end() )
		{
			cout << *iv2++ ;
		}
	}
	
	return 0;
}



转载于:https://www.cnblogs.com/arbboter/archive/2012/07/19/4225261.html