L>public class Program
L>{
L> public static void Main(string[] args)
L> {
L> var toSortInts = new[] {1, 8, 5, 22, 3};
L> var sorted = toSortInts.Select(curInt => new Task(() =>
L> {
L> Thread.Sleep(curInt);
L> Console.WriteLine(curInt);
L> }))
L> .ToList();
L> sorted.ForEach(t => t.start());
L> Console.ReadLine();
L> }
L>}
L>
У вас не работает с отрицательными числами. Держите на плюсах, слегка оптимизированный:
#include <iostream>
#include <vector>
#include <thread>
#include <chrono>
#include <algorithm>
template< typename It >
void sleepSort( const It& begin, const It& end )
{
if ( begin == end )
return;
const auto max = *std::max_element( begin, end );
const auto min = *std::min_element( begin, end );
for ( auto it = begin; it != end; ++it )
{
std::thread( [min, i = *it]
{
std::this_thread::sleep_for( std::chrono::milliseconds( i - min ) );
std::cout << i << std::endl;
} ).detach();
}
std::this_thread::sleep_for( std::chrono::milliseconds( max - min + 1 ) );
}
int main( int argc, char *argv[] )
{
std::vector<int> v = { 20, 5, 15, 10, -5, };
sleepSort( v.begin(), v.end() );
return 0;
}
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, Михaил, Вы писали:
М>>Какой же с++ все-таки избыточно-многословный...
N>Зато работает. В отличие от изначального варианта.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Михaил, Вы писали:
М>>Какой же с++ все-таки избыточно-многословный... CC>Это не сам С++, это заюзанная либа из стандартного комплекта.
Она же давно частью стандарта стала.
А вообще, я в том смысле, что по сути пишешь много, а понятно для непосвященного мало). В отличие от той же джавы или с#, которые любой сишник поймет даже не умея программировать на этих языках.
М>Она же давно частью стандарта стала.
Она всегда была неотъемлемой частью стандарта языка.
Языка C++ не существует вне стандартной библиотеки, ровно также и наоборот.
Здравствуйте, Михaил, Вы писали:
М>Она же давно частью стандарта стала.
Ещё раз: это всего лишь либа, поставляемая в комплекте с компилером. Никто не заставляет использовать именно её.
М>В отличие от той же джавы или с#, которые любой сишник поймет даже не умея программировать на этих языках.
Ты только что по сути сказал что шарпеи и жабники заметно тупее любого наСИльника
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, eskimo82, Вы писали:
E>Языка C++ не существует вне стандартной библиотеки
Это кардинально не так.
Я видел и участвовал в достаточном колве здоровенных проектов на С++, в которых не использовалось ни единого символа из "std::". Более того, на основании этого опыта я могу сказать что std таки сделана доволько уродливо. Можно сделать то же самое куда более внятно и просто.
E> ровно также и наоборот.
А вот наоборот верно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Михaил, Вы писали:
М>>>Какой же с++ все-таки избыточно-многословный... N>>Зато работает. В отличие от изначального варианта. М>Это ж не от языка, а от писателя зависит
В том-то и дело. Если тебя смущает количество символов, то их можно и на плюсах сократить, использовав using. Но всё равно надо сравнивать одинаковые программы, а не работающую и чуть длиннее и неработающую и короче.
SaZ>>У вас не работает с отрицательными числами. Держите на плюсах, слегка оптимизированный:
А вот на Go.
package main
import (
"fmt"
"sync"
"time"
)
func main() {
sleepSort([]int{20, 5, 15, 10, -5})
}
func sleepSort(v []int) {
if len(v) == 0 {
return
}
min := v[0]
for _, e := range v {
if e < min {
min = e
}
}
wg := sync.WaitGroup{}
wg.Add(len(v))
for _, e := range v {
go func(e int) {
defer wg.Done()
time.Sleep(time.Millisecond * time.Duration((e - min)))
fmt.Println(e)
}(e)
}
wg.Wait()
}
CC>Я видел и участвовал в достаточном колве здоровенных проектов на С++, в которых не использовалось ни единого символа из "std::".
У меня для тебя плохие новости — стандартная библиотека это не только символы из std::, но и рантайм поддержка различных конструкций C++, типа dynamic_cast или operator new.
М>>Она же давно частью стандарта стала. CC>Ещё раз: это всего лишь либа, поставляемая в комплекте с компилером. Никто не заставляет использовать именно её.
Еще раз: Это часть компилятора, написаная на специальном (не C++) языке.
Здравствуйте, CreatorCray, Вы писали:
М>>В отличие от той же джавы или с#, которые любой сишник поймет даже не умея программировать на этих языках. CC>Ты только что по сути сказал что шарпеи и жабники заметно тупее любого наСИльника
Или ленивее разбираться в закорючках, если у них и так все работает. Ну и как говорится, Everyone knows 40% of C++. Unfortunately, it's never the same 40%
Здравствуйте, eskimo82, Вы писали:
E>У меня для тебя плохие новости
Да ну!
E>стандартная библиотека это не только символы из std::, но и рантайм поддержка различных конструкций C++, типа dynamic_cast или operator new.
Это называется C++ runtime
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока