- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
#include <iostream>
#include <time.h>
#include <cmath>
#include <windows.h>
using namespace std;
int main()
{
Hashtable^ hat = gcnew Hashtable();
hat->Add(1,"|");
hat->Add(2,"||");
hat->Add(3,"|||");
hat->Add(4,"||||");
hat->Add(5,"|||||");
hat->Add(6,"||||||");
hat->Add(7,"|||||||");
hat->Add(8,"||||||||");
hat->Add(9,"|||||||||");
hat->Add(10,"||||||||||");
hat->Add(11,"|||||||||||");
hat->Add(12,"||||||||||||");
hat->Add(13,"|||||||||||||");
hat->Add(14,"||||||||||||||");
hat->Add(15,"|||||||||||||||");
hat->Add(16,"||||||||||||||||");
hat->Add(17,"|||||||||||||||||");
hat->Add(18,"||||||||||||||||||");
hat->Add(19,"|||||||||||||||||||");
hat->Add(20,"||||||||||||||||||||");
hat->Add(21,"|||||||||||||||||||||");
hat->Add(22,"||||||||||||||||||||||");
hat->Add(23,"|||||||||||||||||||||||");
hat->Add(24,"||||||||||||||||||||||||");
hat->Add(25,"|||||||||||||||||||||||||");
hat->Add(26,"||||||||||||||||||||||||||");
hat->Add(27,"|||||||||||||||||||||||||||");
hat->Add(28,"||||||||||||||||||||||||||||");
hat->Add(29,"|||||||||||||||||||||||||||||");
hat->Add(30,"||||||||||||||||||||||||||||||");
hat->Add(31,"|||||||||||||||||||||||||||||||");
hat->Add(32,"||||||||||||||||||||||||||||||||");
hat->Add(33,"|||||||||||||||||||||||||||||||||");
hat->Add(34,"||||||||||||||||||||||||||||||||||");
hat->Add(35,"|||||||||||||||||||||||||||||||||||");
hat->Add(36,"||||||||||||||||||||||||||||||||||||");
hat->Add(37,"|||||||||||||||||||||||||||||||||||||");
hat->Add(38,"||||||||||||||||||||||||||||||||||||||");
hat->Add(39,"|||||||||||||||||||||||||||||||||||||||");
hat->Add(40,"||||||||||||||||||||||||||||||||||||||||");
hat->Add(41,"|||||||||||||||||||||||||||||||||||||||||");
hat->Add(42,"||||||||||||||||||||||||||||||||||||||||||");
hat->Add(43,"|||||||||||||||||||||||||||||||||||||||||||");
hat->Add(44,"||||||||||||||||||||||||||||||||||||||||||||");
hat->Add(45,"|||||||||||||||||||||||||||||||||||||||||||||");
hat->Add(46,"||||||||||||||||||||||||||||||||||||||||||||||");
hat->Add(47,"|||||||||||||||||||||||||||||||||||||||||||||||");
hat->Add(48,"||||||||||||||||||||||||||||||||||||||||||||||||");
hat->Add(49,"|||||||||||||||||||||||||||||||||||||||||||||||||");
hat->Add(50,"||||||||||||||||||||||||||||||||||||||||||||||||||");
srand(time(0));
for(int i = 1; i<50; i++)
{
int r = rand() % 1000;
String^ s = hat[i]->ToString();
Console::WriteLine("\r"+i*2+"% completed:"+s);
}
cout << endl << "Operation completed successfully.\n" << flush;
return 0;
}
// http://stackoverflow.com/questions/16635787/making-a-console-progress-bar-windows/19589370#19589370
// Рисуем прогресс бар на С++
> ^
Может кто-нибудь объяснить, что это? Насколько мне понятно из нагугленного (понятно далеко не всё), это нечто, указывающее Runtime'у о новых объектах, память (т. е. её выделение и освобождение) для которых управляется этим самым Runtime'ом.
Так что это? Средство, избавляющее от delete, добавляющее некое подобие сборщика мусора?
Это C++ CLI, очередное «расширение» языка от Майкрософта. В общем запилили они .NET, и решили хуйнуть под него все известныя языки (Java, C++, Basic, OCaml). Как скрестить кресты с диезом? А очередным расширением. Всё это превращается во всё тот же IL-ассемблер.
Вот, согласись неприятно когда встречаешь очередной крестоблядский значок и в ахуе пытаешься гуглить что он значит, да?
http://en.wikipedia.org/wiki/C%2B%2B/CLI
https://msdn.microsoft.com/ru-ru/library/te3ecsc8.aspx
Насчёт неприятно - это да. Только мне всегда казалось, что такие "значки" и прочие издевательства над языком требуются только для низкоуровневого программирования. Что ж, это была ошибка, выходит.
А C++CLI для низкоуровневого и применяется... Кому взбредёт в голову писать на этом что-то кроме обёрток для сишных либ да кода, в котором требуется быстродействие?
По сути Cli - это .net для конченных крестоблядей, которые не могут или не хотят из принципа сисетку
Поэтому
"Кому взбредёт в голову писать на этом?"
fixed
Не все.
> Нельзя сделать код быстрее через C++/CLI чем на решетке
Можно. Можно же не .net'товского кода понаписать, а сишного.
> Могу соврать, но и кажется и лабу сишную можно из шарпа завернуть.
Можно, но проблематично.
Дык это обычные плюсы, которые компилятся в нативный экзешник и к дотнету никакого отношения не имеют
>>Не все.
Пример можно?
> > Не все.
> Пример можно?
CLR имеет модификатор доступа к членам "Family and Assembly", аналога которому C# не имеет.
не прав, каюсь.
Но я в целом говорил о том, что писать под дотнет нужно на шарпах (C унд F) и не ипать мозг крестами, все преимущества которых губятся платформой
неа, их можно смешивать - для этого и надо ;)
> Пример можно?
- protected and internal
- fault-блок для try
- exception filters (есть в VB.NET, добавлены в C# 2015)
- отсутствие шарпоограничений на goto (собственно, есть везде)
- немного отличающаяся система приведения типов
- возможность явного невирнульного вызова метода (хм.. а вот это может быть в Си++.NET, хотя понятия не имею)
- возможность создания ref-переменных - как шарповские ref/out-аргументы, только для обычных переменных (рассматривается вопрос о добавлении с C# 7)
- возможность бросать не Exception
- возможность игнорировать проверку корректности приведения типа (кажется)
- ...