iterator چیست ؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

iterator چیست ؟

+2 امتیاز
سلام دوستان

iterator چیست ؟

ممنون
سوال شده فروردین 14, 1393  بوسیله ی Azar (امتیاز 628)   29 43 61
دوباره تگ گذاری شد فروردین 20, 1393 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز
 
بهترین پاسخ

iterator ها برای پیمایش در عنصرهای داخل کلاس های نگهدارنده استفاده میشه .

مانند array و vector و list و ... و کلاس های شبیه به اینها یا همون Container ها .

یعنی iterator رو میشه یه اشاره گر به عنصر یا شی داخل Container دونست .

طوری که میشه با عملگر ++ به شی بعدی و -- به شی قبلی اشاره کرد .

یا با عملگر * (Dereference ) میشه به شیی که بهش اشاره میکنه دسترسی پیدا کرد .

مثلا در لیست-پیوندی اگر شما اشاره گر به شی اول رو داشته باشید نمیتونید با عملگر ++ به شی بعدی برید یا با عملگر * (Dereference) به شی دسترسی داشته باشید . ولی با iterator همچین کارهایی رو میشه به راحتی انجام داد .

یه نمونه کوچیک :

#include <iostream>
#include <vector>
  
using namespace std;

int main()
{

	vector<int> vec;

	vec.push_back (1);
	vec.push_back (2);
	vec.push_back (3);
	vec.push_back (4);

	for (vector<int>::iterator cur = vec.begin(); cur != vec.end(); ++cur)
	{
		int data = *cur;
		cout << data << endl;
	}

	return 0;
} 

برای :std:list هم مثل همون قبلی :

#include <iostream>
#include <vector>
#include <list>
  
using namespace std;

int main()
{
	list<int> numbers;

	numbers.push_back(5);

	numbers.push_back(4);
	numbers.push_back(3);
	numbers.push_back(2);
	numbers.push_back(1);
	numbers.push_back(0);

	numbers.push_front(4);
	numbers.push_front(3);
	numbers.push_front(2);
	numbers.push_front(1);
	numbers.push_front(0);

	for(list<int>::iterator i = numbers.begin();i != numbers.end();i++)
		cout<<*i<<endl;

	return 0;
} 

یا میشه برای راحتتر شدن کار از auto هم استفاده کرد :

	for(auto i = numbers.begin();i != numbers.end();i++)
		cout<<*i<<endl;

 

پاسخ داده شده فروردین 14, 1393 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
ویرایش شده فروردین 14, 1393 بوسیله ی Ali Rahbar
لطفا یک مثال بزنید که از iterator در لینک لیست استفاده شده باشه
...