Форум программистов, компьютерный форум CyberForum.ru

Итератор - C++

Восстановить пароль Регистрация
 
hektor
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 15
14.10.2011, 23:44     Итератор #1
Код
#include <iostream>
#include <list>
using namespace std;
list<int>::iterator pos (list<int> a,list<int>::iterator it)
{
	for (it; it != a.end(); it++)
	{
		if (*it == 5)
		{
			break;
		}
	}
	return it;
}
int main ()
{
	list <int> a;
	for (int i = 0; i < 10; i++)
	{
		a.push_back(i);
	}
	list<int>::iterator it = a.begin();
	cout<<*pos(a,it)<<endl;
	return 0;
}
есть простая функция pos которая возвращает и принимает итератор, почему ошибка при выполнении, как правильно передать этот итератор?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 23:44     Итератор
Посмотрите здесь:

C++ Итератор С++
итератор C++
Итератор!!!!! C++
C++ итератор
Итератор ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
14.10.2011, 23:50     Итератор #2
list<int>::iterator& pos (list<int>& a,list<int>::iterator& it)

Добавлено через 1 минуту
в оригинале вы создаете копию списка
передаете копию итератора, с новой копией списка никак не связанного
возвращаете копию копии итератора на копию списка
hektor
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 15
14.10.2011, 23:58  [ТС]     Итератор #3
alex_x_x Спасибо))),понял.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
15.10.2011, 02:42     Итератор #4
форматирую наугад
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <list>
using namespace std;
list<int>::iterator pos (list<int> *a, list<int>::iterator *it)
{


if (*it== (*a).begin())
printf ("равны!\n");
else
printf ("не равны!\n");

for (it; *it != (*a).end(); (*it)++)
{
if (**it == 5)
{
break;
}
}
return *it;
}
int main ()
{
SetConsoleCP (1251);
SetConsoleOutputCP (1251);


list <int> a;
for (int i = 0; i < 10; i++)
{
a.push_back(i);
}
list<int>::iterator it = a.begin();
cout<<*pos(&a,&it)<<endl;
getchar ();
return 0;
}
не славы ради но развития для!

#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <list>
using namespace std;
list<int>::iterator pos (list<int> &a, list<int>::iterator &it)
{


if (it== a.begin())
printf ("ðàâíû!\n");
else
printf ("íå ðàâíû!\n");

for (it; it != a.end(); it++)
{
if (*it == 5)
{
break;
}
}
return it;
}
int main ()
{
SetConsoleCP (1251);
SetConsoleOutputCP (1251);


list <int> a;
for (int i = 0; i < 10; i++)
{
a.push_back(i);
}
list<int>::iterator it = a.begin();
cout<<*pos(a,it)<<endl;
getchar ();
return 0;
}
Yandex
Объявления
15.10.2011, 02:42     Итератор
Ответ Создать тему
Опции темы

Текущее время: 08:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru