Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Подмена первой на посленюю строк структуры


Автор: Notreg 30.9.2007, 16:44
Есть массив, каждый элемент массивы структура. Нужно заменить первую структуру на последнюю и последнюю на первую в этом массиве.

Автор: Fazil6 30.9.2007, 16:50
очень сложный вопрос.
Код

struct A{};
A a[10];

A a1 = a[0];
a[0] = a[9];
a[9] = a1;

Автор: JackYF 30.9.2007, 17:58
угу. 

Код

std::swap(a[0], a[9]);

Автор: Notreg 30.9.2007, 19:57
так просто, а я думал надо поэлементо , по ходу спутал с массивом??

Добавлено через 1 минуту и 7 секунд
а че такое std::??

Добавлено через 10 минут и 42 секунды
спасибо работает

Автор: Notreg 30.9.2007, 20:21
просто не до конца представил что мне требуется

Автор: JackYF 30.9.2007, 22:21
Цитата(Notreg @  30.9.2007,  19:57 Найти цитируемый пост)
а че такое std::??

пространство имён стандартной библиотеки.

Автор: apook 1.10.2007, 01:29
Цитата(Notreg @  30.9.2007,  19:57 Найти цитируемый пост)
а я думал надо поэлементо , по ходу спутал с массивом??
Может и поэлементно надо, если надо оставить неизменными несколько элементов.

Автор: takedo 3.10.2007, 05:50
операция "=" может и не прокатить. надо её переопределить, примерно так:
Код


A& A::operator=(A& a)
{
 memcpy(this,&a,sizeof(A));
return *this
}

Автор: JackYF 3.10.2007, 16:03
Цитата(takedo @  3.10.2007,  05:50 Найти цитируемый пост)
операция "=" может и не прокатить.

операция = определена всегда, за исключением, если она явно запрещена тобой. и 

Цитата(takedo @  3.10.2007,  05:50 Найти цитируемый пост)
memcpy(this,&a,sizeof(A));
return *this

компилятор сделает автоматом, а может, и не только это, если в структуре были сложные поля.

Так что это - полностью лишнее и далеко не всегда верное.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)