Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 02:21   #11
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

http://www.cplusplus.com/reference/algorithm/swap/

вот вам короче

Код:
template <class T>
void fun( T *M,int a1, int a2 )
{
  swap(M[a1],M[a2]);
}


int main()
{    
	const int n=10;
	int i;
	char *M = new char[n];


	/*  Demo 1  */ 

	strcpy(M,"Hi there!");
	cout << M << endl;
    
    fun<char>(M,2,3);

	cout << M << endl;
    
	/*  Demo 2  */
	
	int *p = new int[n];

	for(i=0; i<n; i++ ) { 
		p[i]=i+1;
		cout << p[i] << " ";
	}

	cout << endl;

    fun<int>(p,4,7);

	for(i=0; i<n; i++ )
		cout << p[i] << " ";

	cout << endl;


	delete[] M;
	delete[] p;

	system("pause");
    return 0;
}
onewho вне форума Ответить с цитированием
Старый 26.02.2011, 03:15   #12
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
По умолчанию

1. большое спасибо за пример, я как-то так и думал,но...
2. но мне нужна реализация ф-ции swap()
P.S. я сам аналог вашего вар-та показывал, однако обругали на отсутствии тела ф-ции swap()
void swap( int &a, int &b )
{
int temp = a;
a = b;
b = temp;
}
Я ,как понял, ее тоже в шаблон завернуть нужно?
zhenya.ya вне форума Ответить с цитированием
Старый 26.02.2011, 06:12   #13
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Функция std::swap уже есть в <algorithm>
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 26.02.2011, 15:14   #14
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
По умолчанию

хм... а как бы можно вот так зделать (правда, не работает почему то):

Код:
template <class T>
void swap( T &a, T &b )
{
    T  temp    = a;
    a = b;
    b = temp;
}
template <class T>
void fun( T *M, int n )
{
	 cout<<"\n";
  swap<T>(M[2],M[3]);
  for(int i=0;i<n;i++) cout<<M[i]<<endl;
}
int main()
{    
	int n=5;
	char *M = new char [n];
	for( int i = 0; i < n; i++ ){ M[i]=i;cout << M[i]<<endl;}
    
    fun<char>(M,n);
	system("pause");
    return 0;
}
zhenya.ya вне форума Ответить с цитированием
Старый 26.02.2011, 15:15   #15
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Я же говорю, удали нафиг свой swap и используй std::swap из <algorithm>
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 26.02.2011, 15:31   #16
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
По умолчанию

Понимаю, что без него проще, но я не могу без swap(), т.к. мне лично было сказано, что должно быть тело этой ф-ции
zhenya.ya вне форума Ответить с цитированием
Старый 26.02.2011, 15:37   #17
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

А, то есть задание заставляет. Понятно.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 26.02.2011, 16:07   #18
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
По умолчанию

Точнее преподаватель, а не задание.
Так а почему же тогда не работает (см. #14)???
zhenya.ya вне форума Ответить с цитированием
Старый 26.02.2011, 16:30   #19
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Пишите не swap<T>(M[2],M[3]);, а swap(M[2],M[3]);
Но я не знаю, в этом ли проблема.

Что там не работает-то?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 26.02.2011, 16:40   #20
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
По умолчанию

В моем варианте и ,если, по Вашему вар-ту одна и та же ошибка( указывает на строку swap(M[2],M[3]); ) / Вот она: error C2668: swap: неоднозначный вызов перегруженной функции.
zhenya.ya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция if IRMA230 Microsoft Office Excel 12 02.06.2010 22:43
Функция MilenaR Помощь студентам 5 10.05.2010 20:43
функция gets U-S Общие вопросы C/C++ 6 14.11.2009 13:49
Функция в c++ JOFRIF Помощь студентам 1 08.05.2008 18:30
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50