Учим языки программирования, Помогаем друг-другу, делимся опытом. |
Здравствуйте, гость ( Авторизация | Регистрация )
Учим языки программирования, Помогаем друг-другу, делимся опытом. |
16.02.2013, 15:15
Сообщение
#561
|
|
Follow me: @VIGUR91 Репутация: 2821 Группа: Участник Сообщений: 10420 Награды: 9 Регистрация: 29.03.2008 |
refuse, специально запустил С# только что. Действительно, при использовании неэлементарных типов передаются линки на объекты. Почему же тогда они в официальном референсе дезинформируют:
Цитата Initializes a new instance of the List<T> class that contains elements copied from the specified collection. При элеметарных типах (например, int) работает как ожидается: Код using System; Выводит:using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { List<int> l1 = new List<int>(); for (int i = 0; i < 5; i++) l1.Add(i + 1); Console.WriteLine("Первый массив"); foreach (int i in l1) Console.WriteLine(i.ToString()); List<int> l2 = new List<int>(l1); Console.WriteLine("Второй массив"); foreach (int i in l2) Console.WriteLine(i.ToString()); Console.WriteLine("Поменяли второй массив"); for (int i = 0; i < 5; i++) { l2[i] += 1; } foreach (int i in l2) Console.WriteLine(i.ToString()); Console.WriteLine("Выводим первый массив"); foreach (int i in l1) Console.WriteLine(i.ToString()); Console.ReadKey(); } } } Код Первый массив
1 2 3 4 5 Второй массив 1 2 3 4 5 Поменяли второй массив 2 3 4 5 6 Выводим первый массив 1 2 3 4 5 -------------------- Мой ник читается как VÍGUR (с ударением на первый слог!)
Programming is like sex: one mistake and you have to support it for the rest of your life... "- Ребята, хватит. Всё. Креатива больше не надо... - Верно, согласны. Креатива больше не надо. НА СЕГОДНЯ креатива больше не надо." (с) Андрей Прохоров. |
 
|
|
|
|
16.02.2013, 15:36
Сообщение
#562
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
ну поскольку основная концепция таких языков как с# - автоматическое управление памятью, разработчики нам и не дали возможности оперировать объектами, а только линками на них, исключениями являются pod-типы.
-------------------- nop
|
 
|
|
16.02.2013, 16:19
Сообщение
#563
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Действительно, при использовании неэлементарных типов передаются линки на объекты. Если хочешь результата, как с int, можно класть в список struct. Цитата Почему же тогда они в официальном референсе дезинформируют: Цитата Initializes a new instance of the List<T> class that contains elements copied from the specified collection. Никакой дезинформации. Почитай про reference types и value types. |
 
|
|
16.02.2013, 17:26
Сообщение
#564
|
|
Follow me: @VIGUR91 Репутация: 2821 Группа: Участник Сообщений: 10420 Награды: 9 Регистрация: 29.03.2008 |
abramcumner, я с С# никогда не работал. Просто интересно стало в данном конкретном случае. Вот даже первый раз в Студии для этого создал С#-проект.
-------------------- Мой ник читается как VÍGUR (с ударением на первый слог!)
Programming is like sex: one mistake and you have to support it for the rest of your life... "- Ребята, хватит. Всё. Креатива больше не надо... - Верно, согласны. Креатива больше не надо. НА СЕГОДНЯ креатива больше не надо." (с) Андрей Прохоров. |
 
|
|
17.02.2013, 13:34
Сообщение
#565
|
|
Игровое Воплощение Репутация: 384 Группа: Участник Сообщений: 4718 Награды: 9 Регистрация: 21.05.2008 |
Цитата abramcumner, я с С# никогда не работал. c# - великолепен LINQ - вообще супер ) Нужно мне отсортировать тот же список, по полю объекта: Цитата det.OrderByDescending(x => x.Lenght).ToList();
|
 
|
|
17.02.2013, 14:36
Сообщение
#566
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
пфф, уродливый синтаксис, избыточность и неповоротливость - в этом заключается велколепие? с# и .net обречен на вымирание также как и другие недотехнологии мелкософта, вроде xnы и сильверлайта.
все самые светлые идеи уже воплощены в чистом и прекрасном мире С/C++ остальные 100500 недоязыков только опошляют их. -------------------- nop
|
 
|
|
17.02.2013, 14:50
Сообщение
#567
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
refuse,
Ну и где красивый аналог кода выше на с++. |
 
|
|
17.02.2013, 14:51
Сообщение
#568
|
|
Игровое Воплощение Репутация: 384 Группа: Участник Сообщений: 4718 Награды: 9 Регистрация: 21.05.2008 |
refuse тут важно то, что он прост в освоение и решает массу простых задач. Зачем мне мучится на c++, если та же производительность не так нужна в простых приложениях.
Синтаксис периодически да... Уродлив. В инсте когда пересадили меня с паскаля на си, я думал что у си уродский синтаксис, но через пару месяцев уже по другому писать не мог, тут вопрос привычки. Да и учу язык не ради удовольствия, хочу сменить работу, естественно ради денег. |
 
|
|
17.02.2013, 14:56
Сообщение
#569
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
ну в плане простоты это да, признаться сам сейчас присматриваюсь к
Сообщение отредактировал refuse - 17.02.2013, 14:57 -------------------- nop
|
 
|
|
17.02.2013, 15:11
Сообщение
#570
|
|
Игровое Воплощение Репутация: 384 Группа: Участник Сообщений: 4718 Награды: 9 Регистрация: 21.05.2008 |
refuse чет на русском не нашел доков...
|
 
|
|
17.02.2013, 15:15
Сообщение
#571
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Ну и где красивый аналог кода выше на с++. а в чем проблема, сложно представить как в си, с использованием той же glib, или в си++ отсортировать список по полю структуры? -------------------- nop
|
 
|
|
17.02.2013, 16:44
Сообщение
#572
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
ну вот аналог устойчивой сортировки списка merge sort'ом за O(n*log(n)) на с/c++
код кроссплатформенный и никаких сборок, зависимостей компиляторов фреймворков за собой не тащит, окромя stl, да и тот можно прилинковать статически. времени ~1.5 часа потрачено, включая обед. -------------------- nop
|
 
|
|
17.02.2013, 17:32
Сообщение
#573
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
ну вот аналог устойчивой сортировки списка merge sort'ом за O(n*log(n)) на с/c++ Как можно говорить о красоте при замене одной строчки на 50??? Код кстати делает не то что нужно, нужна сортировка по убыванию. В с++ варианте у структуры захаркожен operaror<. Чтобы будешь делать, если надо сортировать по возрастанию и убыванию. В общем попытка не засчитана Цитата времени ~1.5 часа потрачено, включая обед. Код на С# написан без раздумий за минуту. |
 
|
|
17.02.2013, 17:55
Сообщение
#574
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Как можно говорить о красоте при замене одной строчки на 50??? в первоначальном примере не весь код, в моем, если убрать лишнее, от силы четыре строчки останется, зато глядя на этот код не нужно ломать голову что он делает. Чтобы будешь делать, если надо сортировать по возрастанию и убыванию. так же в точности заменю.добавлю пару строк кода за минуту Код //... bool greater(const some &s1, const some &s2) { return s1.get() > s2.get(); } int main() { std::list<some> sl; for (int i = 0; i < SHRT_MAX; i++) { sl.push_back(some(rand())); } sl.sort(greater); for (std::list<some>::iterator it = sl.begin(); it != sl.end(); it++) { std::cout << it->get() << std::endl; } getchar(); return 0; } Код на С# написан без раздумий за минуту. ну не, я-то потратил 1ю5 часа на свою реализацию сортировки списка, которая не требует подключения дополнительных библиотек и будет работать практически на любой широко распространенной платформе, код на C# тянет за собой увесистый фреймворк, различные реализации которого еще неизвестно как себя поведут. В общем попытка не засчитана okay -------------------- nop
|
 
|
|
17.02.2013, 18:18
Сообщение
#575
|
|
Игровое Воплощение Репутация: 384 Группа: Участник Сообщений: 4718 Награды: 9 Регистрация: 21.05.2008 |
refuse я думаю срач тут не уместен, очевидно , что с++ имеет больше возможностей, но зачем они нужны для чего-то простого?
|
 
|
|
17.02.2013, 18:49
Сообщение
#576
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
ок, я уже сдался же
+ Цитата Код кстати делает не то что нужно, нужна сортировка по убыванию. не могу не упомянуть про list::reverse_iterator -------------------- nop
|
 
|
|
17.02.2013, 19:16
Сообщение
#577
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Код bool greater(const some &s1, const some &s2) { return s1.get() > s2.get(); } sl.sort(greater); Код det.OrderByDescending(x => x.Lenght).ToList(); Вроде очевидно что красивей. С++ даже новые лямбды не помогут. А еще у тебя не видно по какому же полю идет сортировка Цитата собой увесистый фреймворк, различные реализации которого еще неизвестно как себя поведут. Точно так же, как и разные реализации STL - как прописано в стандарте. |
 
|
|
17.02.2013, 21:31
Сообщение
#578
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Цитата Вроде очевидно что красивей. С++ даже новые лямбды не помогут. ну если речь зашла о функциональщине в с++, то есть еще вариант воспользоваться boost/что-то еще/свой велосипед, но тут да, смысла особого нет. -------------------- nop
|
 
|
|
17.02.2013, 22:55
Сообщение
#579
|
|
Follow me: @VIGUR91 Репутация: 2821 Группа: Участник Сообщений: 10420 Награды: 9 Регистрация: 29.03.2008 |
Любо читать такие споры о программинге у нас на форуме.
refuse, кстати, под многие платформы сразу (в том числе и тач-девайсы) еще на -------------------- Мой ник читается как VÍGUR (с ударением на первый слог!)
Programming is like sex: one mistake and you have to support it for the rest of your life... "- Ребята, хватит. Всё. Креатива больше не надо... - Верно, согласны. Креатива больше не надо. НА СЕГОДНЯ креатива больше не надо." (с) Андрей Прохоров. |
 
|
|
18.02.2013, 06:36
Сообщение
#580
|
|
Игровое Воплощение Репутация: 384 Группа: Участник Сообщений: 4718 Награды: 9 Регистрация: 21.05.2008 |
refuse фреймворк требует не только твое приложение, но и куча других, пользователь полюбому поставит его...
Опять же, зачем изобретать велосипед... Зачем тратить уймы времени, на то, что уже реализовано. Т.е. я понимаю, если это высоконгруженное приложение, и тебе нужно экономить время и т.п. |
 
|
|
Текстовая версия | Сейчас: 06.06.2024, 08:03 |