Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!
38 страниц V  « < 27 28 29 30 31 > »   
Ответить в данную темуНачать новую тему
> Учим языки программирования, Помогаем друг-другу, делимся опытом.
VIGUR
сообщение 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.
sad.gif
При элеметарных типах (например, 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...

"- Ребята, хватит. Всё. Креатива больше не надо...
- Верно, согласны. Креатива больше не надо. НА СЕГОДНЯ креатива больше не надо." (с) Андрей Прохоров.

Перейти в начало страницы
 
autistic
сообщение 16.02.2013, 15:36
Сообщение #562


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


ну поскольку основная концепция таких языков как с# - автоматическое управление памятью, разработчики нам и не дали возможности оперировать объектами, а только линками на них, исключениями являются pod-типы.


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 16.02.2013, 16:19
Сообщение #563


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(VIGUR @ 16.02.2013, 16:15) *
Действительно, при использовании неэлементарных типов передаются линки на объекты.

Если хочешь результата, как с int, можно класть в список struct.

Цитата
Почему же тогда они в официальном референсе дезинформируют:
Цитата
Initializes a new instance of the List<T> class that contains elements copied from the specified collection.
sad.gif

Никакой дезинформации. Почитай про reference types и value types.
Перейти в начало страницы
 
VIGUR
сообщение 16.02.2013, 17:26
Сообщение #564


Follow me: @VIGUR91
************************

Репутация:   2821  
Группа: Участник
Сообщений: 10420
Награды: 9
Регистрация: 29.03.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


abramcumner, я с С# никогда не работал. Просто интересно стало в данном конкретном случае. Вот даже первый раз в Студии для этого создал С#-проект. smile.gif


--------------------
Мой ник читается как VÍGUR (с ударением на первый слог!)

Programming is like sex: one mistake and you have to support it for the rest of your life...

"- Ребята, хватит. Всё. Креатива больше не надо...
- Верно, согласны. Креатива больше не надо. НА СЕГОДНЯ креатива больше не надо." (с) Андрей Прохоров.

Перейти в начало страницы
 
nuan
сообщение 17.02.2013, 13:34
Сообщение #565


Игровое Воплощение
*********************

Репутация:   384  
Группа: Участник
Сообщений: 4718
Награды: 9
Регистрация: 21.05.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата
abramcumner, я с С# никогда не работал.

c# - великолепен smile.gif LINQ - вообще супер )
Нужно мне отсортировать тот же список, по полю объекта:
Цитата
det.OrderByDescending(x => x.Lenght).ToList();
Перейти в начало страницы
 
autistic
сообщение 17.02.2013, 14:36
Сообщение #566


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


пфф, уродливый синтаксис, избыточность и неповоротливость - в этом заключается велколепие? с# и .net обречен на вымирание также как и другие недотехнологии мелкософта, вроде xnы и сильверлайта.
все самые светлые идеи уже воплощены в чистом и прекрасном мире С/C++ остальные 100500 недоязыков только опошляют их.
http://developer.gnome.org/glib/2.34/glib-...tml#g-list-sort
http://msdn.microsoft.com/ru-ru/library/kz841ss7.aspx


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 17.02.2013, 14:50
Сообщение #567


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


refuse,
laugh.gif Ну и где красивый аналог кода выше на с++.
Перейти в начало страницы
 
nuan
сообщение 17.02.2013, 14:51
Сообщение #568


Игровое Воплощение
*********************

Репутация:   384  
Группа: Участник
Сообщений: 4718
Награды: 9
Регистрация: 21.05.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


refuse тут важно то, что он прост в освоение и решает массу простых задач. Зачем мне мучится на c++, если та же производительность не так нужна в простых приложениях.
Синтаксис периодически да... Уродлив.
В инсте когда пересадили меня с паскаля на си, я думал что у си уродский синтаксис, но через пару месяцев уже по другому писать не мог, тут вопрос привычки.
Да и учу язык не ради удовольствия, хочу сменить работу, естественно ради денег.
Перейти в начало страницы
 
autistic
сообщение 17.02.2013, 14:56
Сообщение #569


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


ну в плане простоты это да, признаться сам сейчас присматриваюсь к monotouch/monodroid чтобы использовать его в качестве высокоуровневой обертки над си-кодом, это должно сильно упростить мне жизнь.

Сообщение отредактировал refuse - 17.02.2013, 14:57


--------------------
nop
Перейти в начало страницы
 
nuan
сообщение 17.02.2013, 15:11
Сообщение #570


Игровое Воплощение
*********************

Репутация:   384  
Группа: Участник
Сообщений: 4718
Награды: 9
Регистрация: 21.05.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


refuse чет на русском не нашел доков...
Перейти в начало страницы
 
autistic
сообщение 17.02.2013, 15:15
Сообщение #571


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 17.02.2013, 15:50) *
Ну и где красивый аналог кода выше на с++.

а в чем проблема, сложно представить как в си, с использованием той же glib, или в си++ отсортировать список по полю структуры?


--------------------
nop
Перейти в начало страницы
 
autistic
сообщение 17.02.2013, 16:44
Сообщение #572


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


ну вот аналог устойчивой сортировки списка merge sort'ом за O(n*log(n)) на с/c++
http://ideone.com/vRbYU2

код кроссплатформенный и никаких сборок, зависимостей компиляторов фреймворков за собой не тащит, окромя stl, да и тот можно прилинковать статически. времени ~1.5 часа потрачено, включая обед.


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 17.02.2013, 17:32
Сообщение #573


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(refuse @ 17.02.2013, 17:44) *
ну вот аналог устойчивой сортировки списка merge sort'ом за O(n*log(n)) на с/c++

z_crazy.gif Как можно говорить о красоте при замене одной строчки на 50???
Код кстати делает не то что нужно, нужна сортировка по убыванию.
В с++ варианте у структуры захаркожен operaror<. Чтобы будешь делать, если надо сортировать по возрастанию и убыванию.
В общем попытка не засчитана smile.gif

Цитата
времени ~1.5 часа потрачено, включая обед.

Код на С# написан без раздумий за минуту.
Перейти в начало страницы
 
autistic
сообщение 17.02.2013, 17:55
Сообщение #574


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 17.02.2013, 18:32) *
Как можно говорить о красоте при замене одной строчки на 50???

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

Цитата(abramcumner @ 17.02.2013, 18:32) *
Чтобы будешь делать, если надо сортировать по возрастанию и убыванию.

так же в точности заменю.добавлю пару строк кода за минуту
Код
//...

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;
}


Цитата(abramcumner @ 17.02.2013, 18:32) *
Код на С# написан без раздумий за минуту.

ну не, я-то потратил 1ю5 часа на свою реализацию сортировки списка, которая не требует подключения дополнительных библиотек и будет работать практически на любой широко распространенной платформе, код на C# тянет за собой увесистый фреймворк, различные реализации которого еще неизвестно как себя поведут.

Цитата(abramcumner @ 17.02.2013, 18:32) *
В общем попытка не засчитана smile.gif

okay smile.gif


--------------------
nop
Перейти в начало страницы
 
nuan
сообщение 17.02.2013, 18:18
Сообщение #575


Игровое Воплощение
*********************

Репутация:   384  
Группа: Участник
Сообщений: 4718
Награды: 9
Регистрация: 21.05.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


refuse я думаю срач тут не уместен, очевидно , что с++ имеет больше возможностей, но зачем они нужны для чего-то простого?
Перейти в начало страницы
 
autistic
сообщение 17.02.2013, 18:49
Сообщение #576


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


ок, я уже сдался же smile.gif
+
Цитата
Код кстати делает не то что нужно, нужна сортировка по убыванию.

не могу не упомянуть про list::reverse_iterator


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 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();

Вроде очевидно что красивей. С++ даже новые лямбды не помогут. А еще у тебя не видно по какому же полю идет сортировка smile.gif

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

Точно так же, как и разные реализации STL - как прописано в стандарте.
Перейти в начало страницы
 
autistic
сообщение 17.02.2013, 21:31
Сообщение #578


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата
Вроде очевидно что красивей. С++ даже новые лямбды не помогут.

ну если речь зашла о функциональщине в с++, то есть еще вариант воспользоваться boost/что-то еще/свой велосипед, но тут да, смысла особого нет.


--------------------
nop
Перейти в начало страницы
 
VIGUR
сообщение 17.02.2013, 22:55
Сообщение #579


Follow me: @VIGUR91
************************

Репутация:   2821  
Группа: Участник
Сообщений: 10420
Награды: 9
Регистрация: 29.03.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


Любо читать такие споры о программинге у нас на форуме. happy.gif
refuse, кстати, под многие платформы сразу (в том числе и тач-девайсы) еще на haxe/nme можно писать. И это выглядит вообще почти как AS3, что есть очень удобно, но при этом значительно быстрее чистого AS3 даже под платформу Flash.


--------------------
Мой ник читается как VÍGUR (с ударением на первый слог!)

Programming is like sex: one mistake and you have to support it for the rest of your life...

"- Ребята, хватит. Всё. Креатива больше не надо...
- Верно, согласны. Креатива больше не надо. НА СЕГОДНЯ креатива больше не надо." (с) Андрей Прохоров.

Перейти в начало страницы
 
nuan
сообщение 18.02.2013, 06:36
Сообщение #580


Игровое Воплощение
*********************

Репутация:   384  
Группа: Участник
Сообщений: 4718
Награды: 9
Регистрация: 21.05.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


refuse фреймворк требует не только твое приложение, но и куча других, пользователь полюбому поставит его...
Опять же, зачем изобретать велосипед... Зачем тратить уймы времени, на то, что уже реализовано.
Т.е. я понимаю, если это высоконгруженное приложение, и тебе нужно экономить время и т.п.
Перейти в начало страницы
 

38 страниц V  « < 27 28 29 30 31 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 06.06.2024, 08:03