analog "swap()" function in C++ exists in C# ?
От: jyuyjiyuijyu  
Дата: 06.12.13 05:31
Оценка:
Всем привет

давеча хотел обменять значения двух хендлов в массиве хендлов и не обнаружил в
C++/CLI аналога std::swap...

cli::array<Object^>


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

auto t = a[j];
a[j] = a[i];
a[i] = t;


почему в C++ есть std::swap а в .NET ничего подобного нету ?

или плохо искал ?

спасибо
Re: analog "swap()" function in C++ exists in C# ?
От: -n1l-  
Дата: 06.12.13 05:52
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Всем привет


J>давеча хотел обменять значения двух хендлов в массиве хендлов и не обнаружил в

J>C++/CLI аналога std::swap...

J>
J>cli::array<Object^>
J>


J>пришлось вместо одной строки писать три с временной переменной...


J>
J>auto t = a[j];
J>a[j] = a[i];
J>a[i] = t;
J>


J>почему в C++ есть std::swap а в .NET ничего подобного нету ?


J>или плохо искал ?


J>спасибо


В дотнете нет, наверное в силу различий ссылочных и вещественных типов .
Предполагалось, наверное, что легче написать конкретный метод(методы) самому разработчику.
Re: analog "swap()" function in C++ exists in C# ?
От: -n1l-  
Дата: 06.12.13 05:53
Оценка:
Плюс для коллекций уже есть linq.
Re: analog "swap()" function in C++ exists in C# ?
От: Sinix  
Дата: 06.12.13 06:27
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Всем привет


J>давеча хотел обменять значения двух хендлов в массиве хендлов и не обнаружил в

J>C++/CLI аналога std::swap...

        static void Swap<T>(ref T a, ref T b)
        {
            T c = a;
            a = b;
            b = c;
        }

        static void Main(string[] args)
        {
            int[] a = Enumerable.Range(0, 10).ToArray();

            Swap(ref a[0], ref a[1]);

            Console.WriteLine(string.Join(",", a));
            Console.ReadKey();
        }



P.S. с прочими коллекциями именно так не выйдет, но никто не запрещает передавать в хелпер саму коллекцию и позиции (ключи) элементов.
Re[2]: analog "swap()" function in C++ exists in C# ?
От: jyuyjiyuijyu  
Дата: 06.12.13 06:56
Оценка:
Здравствуйте, Sinix, Вы писали:

странно что это надо писать самому... вот у меня утилита ~1000 строк и обменять мне надо было в одном месте неужели писать еще всякие функции для обмена которые нужны только один раз...
Re[3]: analog "swap()" function in C++ exists in C# ?
От: Doc Россия http://andrey.moveax.ru
Дата: 06.12.13 07:54
Оценка: +1
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>странно что это надо писать самому...


А что там писать? Исходная мессага длиннее Я понимаю сортировки, поиск и т.д. а тут то 3 еле заметные сроки.
Re[3]: analog "swap()" function in C++ exists in C# ?
От: Sinix  
Дата: 06.12.13 08:27
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>странно что это надо писать самому... вот у меня утилита ~1000 строк и обменять мне надо было в одном месте неужели писать еще всякие функции для обмена которые нужны только один раз...


Оно мало кому нужно. Лично мне всего пару раз пригодилось, да и то внутри вспомогательного кода по объёму заметно большего, чем сам Swap. В std тоже не всё есть, но по этому поводу почему-то никто не переживает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.