
Constantine
16.10.2017
20:03:29
интересно, сколько лет разработки стандарта потребуется для добавления функции snwprintf

Alex Фэils?︙
16.10.2017
20:14:39

Норман
16.10.2017
20:15:05
всего-то столько лет прошло

Google

Alex Фэils?︙
16.10.2017
20:16:57
Хотя я не помню, стд это или екст
/cppref itoa

FailsBot
16.10.2017
20:17:52
Search results for "itoa"
- Nothing found.

Ioann V
16.10.2017
20:47:17
В сиплас палс ежжи strtod или типа того

Alex Фэils?︙
16.10.2017
20:49:33
Точно

Ioann V
16.10.2017
20:55:56
Проверю завтра кстати, что будет быстрее std vector, с reserve n elements
Против std vector с аллкатором, у которого эти элементы выделяются на стеке
И запихаю в куюнить таску
Возможно, кстати, имеет смысл написать свой вектор без аллокатора, но у которого часть элементов стековая, а другая часть кучная. Собственно я такоц и использую, и стало интересно, а на сколько такой костыль оправдан и быстрее ли std vector с allocator

Stanislav
16.10.2017
21:04:04

Alexander
16.10.2017
21:04:50

Google

Ioann V
16.10.2017
21:05:35

Constantine
16.10.2017
21:06:12

Andre
16.10.2017
21:08:45
нет, это который создает std::string

Stanislav
16.10.2017
21:09:05

Constantine
16.10.2017
21:09:49

Anatoly
16.10.2017
21:10:08

Vladislav
16.10.2017
21:10:57

Ioann V
16.10.2017
21:10:58
Реверса ?

Anatoly
16.10.2017
21:11:32

Constantine
16.10.2017
21:11:33
подождите, невозможно реализовать так хранимый вектор по стандарту
там гарантия последовательности в памяти
можно делать автоматический выбор от размера, конечно

Vladislav
16.10.2017
21:12:41

Ioann V
16.10.2017
21:12:48
Тьфу, прочил так ресерв
Не, у меня есть такая ситуация в проекте что иногда известно примерное количество элементов которое надо запихать в массив, оно не большое как правило. Но ситуация может повторяться 1млн раз.

Vladislav
16.10.2017
21:13:04

Constantine
16.10.2017
21:13:18

Vladislav
16.10.2017
21:13:22
но тут нужно смотреть на распределение размеров векторов в приложении, чтобы это было полезно

Alexander
16.10.2017
21:13:45

Constantine
16.10.2017
21:13:52
я слышал антон говорил, что стандарт по сути не допускает small object optimization для vector

Google

Constantine
16.10.2017
21:14:02
я не знаю детали

Vladislav
16.10.2017
21:14:18

Ioann V
16.10.2017
21:14:22

Constantine
16.10.2017
21:18:25
std::to_chars работает с С строками
я беру свои слова назад, С++17 все еще система издевательств
где там мой гитлер про 14 стандарт

Ioann V
16.10.2017
21:20:05
Саша знает, что я С люблю

Constantine
16.10.2017
21:20:34
мне надо перевести uintmax_t в wstring (locale-independent способом)
набросайте плиз код
на ISO C++

Alexander
16.10.2017
21:21:00

fox.cpp
16.10.2017
21:21:22
https://www.youtube.com/watch?v=ND-TuW0KIgg
вот

Constantine
16.10.2017
21:23:04
да, я про это видео
про git это явно проблемы какого-то школьника были
> мне надо перевести uintmax_t в wstring (locale-independent способом)
> набросайте плиз код на ISO C++
собственно такой вопрос нужно авторам стандарта отправить, имхо
язык программирования общего назначения в 2017 году не содержит штатного и хоть немного близкого к нему способа это сделать
перевести число в строку

Google

Constantine
16.10.2017
21:36:32
эту функцию поддерживал турбо паскаль

Anatoly
16.10.2017
21:58:33
wstring w{s.begin(), s.end()};

Constantine
16.10.2017
21:59:40
а как получить string?
через snprintf / sprintf?

Admin
ERROR: S client not available

Constantine
16.10.2017
22:00:09
сколько там, шесть операторов языка?

Anatoly
16.10.2017
22:00:09
to_string

fox.cpp
16.10.2017
22:00:18
to_string не катит разве

Constantine
16.10.2017
22:00:20
to_string локаль-зависимый

it-trend
16.10.2017
22:00:30

Constantine
16.10.2017
22:00:38
например, может 1000 как 1 000 записать
или арабскими цифрами

fox.cpp
16.10.2017
22:01:14
ну запиши в строковой поток число, форсировав дефолтную локаль (точно не знаю, как это правильно делается)
std::locale imbue( const std::locale& loc );

Constantine
16.10.2017
22:02:07
это очень забавно, не находите?

fox.cpp
16.10.2017
22:02:47
я забыл название метода для потока

Constantine
16.10.2017
22:03:20
мне кажется, что получится не меньше 7 строк в любом случае

fox.cpp
16.10.2017
22:04:38
std::wstring to_wstring(uintmax_t i, std::locale locale = std::locale("C")) {
std::wstringstream wss;
wss.imbue(locale);
wss << i;
return wss.str();
}

Google

fox.cpp
16.10.2017
22:04:40
наверн как-то так
а теперь давайте пропосал, чтобы добавить to_wstring, а к to_string добавить параметр locale

Stanislav
16.10.2017
22:07:24

fox.cpp
16.10.2017
22:07:42
гм, ладно

Constantine
16.10.2017
22:07:52
https://godbolt.org/g/2gDZCj

fox.cpp
16.10.2017
22:08:06
но locale, раз to_string локаль-зависимый надо бы

Constantine
16.10.2017
22:08:15
96 ассемблерных инструкций, аллокатор памяти
вызовы виртуальных функций
ява будет быстрее работать, вот серьезно
еще и noexcept нет и, видимо, не придвидится
а, еще многопоточные запросы блокировки должны быть
атомарные операции почти наверняка есть
мне кажется, что ручками цикл с делением на 10 будет быстрее работать
std::wstring result;
for (; i != 0; i /= 10)
result += static_cast<wchar_t>(i % 10 + L'0');
std::reverse(result.begin(), result.end());
еще 0 проверить

Anatoly
16.10.2017
22:26:25
да, если уж нужна скорость я бы не поленился и исключил и аллокацию и реверс :)
wchar_t* to_wstring(wchar_t w[], size_t n, uintmax_t u) {
auto *e = w + n;
auto *b = e;
for (; u; u /= 10) {
*--b = L'0' + (u % 10);
}
return b;
}
int main() {
wchar_t b[std::numeric_limits<uintmax_t>::digits10] = { 0 };
std::wcout << (b, sizeof(b) / sizeof(b[0]), std::numeric_limits<uintmax_t>::max()) << std::endl;
std::wcout << std::numeric_limits<uintmax_t>::max() << std::endl;
}

Constantine
16.10.2017
22:51:09
digits10 мало