Здравствуйте, 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# ?
Здравствуйте, 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# ?
странно что это надо писать самому... вот у меня утилита ~1000 строк и обменять мне надо было в одном месте неужели писать еще всякие функции для обмена которые нужны только один раз...
Re[3]: analog "swap()" function in C++ exists in C# ?
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>странно что это надо писать самому... вот у меня утилита ~1000 строк и обменять мне надо было в одном месте неужели писать еще всякие функции для обмена которые нужны только один раз...
Оно мало кому нужно. Лично мне всего пару раз пригодилось, да и то внутри вспомогательного кода по объёму заметно большего, чем сам Swap. В std тоже не всё есть, но по этому поводу почему-то никто не переживает