Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, история, 10 лет назад, По-русски

Рад сообщить вам, что C++14 добавлен в список поддержанных языков на Codeforces. Выбор компилятора пал на MinGW-w64, версия GCC 6.2.0 (будем обновлять по мере выхода). Если у вас Windows, то установить именно эту сборку можно из PBOX одной командой pbox install mingw-w64.

Кроме новомодных фишечек C++14 (не уверен, что есть много полезного для соревнований), есть такие плюсы:

  • эта сборка быстрее mingw-tdm 5.1.0 работает с cin/cout — например перевернуть последовательность 106 целых чисел от 1 до 106 работает 1.5 секунды вместо 2.5 (и 0.3 вместо 1 при использовании std::ios::sync_with_stdio(false))
  • корректно работает вывод double как со спецификаторами как %f так и %lf (читать надо с помощью %lf)
  • корректно работает ввод-вывод long double как со спецификатором %Lf
  • корректно работает ввод-вывод long long как с %lld так и с %I64d

Вероятно, чтобы уменьшить не очень нужное разнообразие реализаций C++ через некоторое время MinGW С++ и MinGW С++11 будут исключены, тем более что их сложно обновить до GCC 6 из-за сложностей с обратной совместимостью. Конечно, через некоторое время C++14 появится и в Polygon.

  • Проголосовать: нравится
  • +1159
  • Проголосовать: не нравится

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +28 Проголосовать: не нравится

Are there any nifty features like those from c++11?

»
10 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +14 Проголосовать: не нравится

MikeMirzayanov, почему бы не добавить компилятор MS C++ 2013 или 2015?

  • »
    »
    10 лет назад, скрыть # ^ |
     
    Проголосовать: нравится -28 Проголосовать: не нравится

    Зачем он тебе? Все что есть там, будет и в этом компиляторе

    • »
      »
      »
      10 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +24 Проголосовать: не нравится

      Например, на домашнем компе стоит MS VS 2013/2015, используется для компиляции и отладки перед отправкой. То, что компилируется в MS VS, далеко не всегда компилируется в GCC. Аналогично, то, что правильно работает в MS VS, может неправильно работать в GCC. Все это потому что MS VS иногда "прощает" отступление от стандарта и не делает UB там, где это может сделать GCC. А во время раунда тратить время на то, чтобы прогнать решение в двух компиляторах — непозволительная роскошь.

    • »
      »
      »
      10 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +11 Проголосовать: не нравится

      DmitriyH дело говорит. Пишу в Visual Studio и испытываю неудобства из-за различий компиляторов.

    • »
      »
      »
      10 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +6 Проголосовать: не нравится

      Ага, и кое-что лишнее будет. А именно, баги компилятора. На Codeforces уже миллион постов о багах в g++, а вот на MS C++ пока никто особо не жаловался.

  • »
    »
    10 лет назад, скрыть # ^ |
    ← Rev. 2  
    Проголосовать: нравится +19 Проголосовать: не нравится

    Поддерживаю. На каждом первом контесте постоянно получаю ошибку компиляции, забывая, что этот компилятор устаревший и не поддерживает for (auto a : b) UPD: совсем забыл про инициализацию pair с помощью {a, b} вместо б-гомерзкой make_pair()!

  • »
    »
    10 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +11 Проголосовать: не нравится

    MS VS C++ 2015!

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +85 Проголосовать: не нравится

works correctly to read-write long long both with %lld and %I64d

works correctly to read-write long long both with %lld and %I64d

works correctly to read-write long long both with %lld and %I64d

works correctly to read-write long long both with %lld and %I64d

Finally!

»
10 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится -67 Проголосовать: не нравится

will xcode be supported at any time in the future /?

UPD : i meant the C++ language that xcode uses ... it's a bit strange from MSVS2010 and C++11 .... i wish that some day xcode will be a language to submit like MSVS

»
10 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится -8 Проголосовать: не нравится

Hoora!! so what is g++14?!

What's the different between g++11 & g++14?

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +17 Проголосовать: не нравится

I'm sorry if this is out of topic, but when did CF completely remove Java 7 ? I recently realized that during contest #366, I submitted A and B using Java 7, and C onwards, Java 8 was the only Java version available..Was Java 7 removed right during the contest ?

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

Wow!!! great news.

»
10 лет назад, скрыть # |
← Rev. 5  
Проголосовать: нравится +91 Проголосовать: не нравится

A word of warning: looks like scanf is much slower on C++14 than it was on C++11. Here are three submissions using almost the same code on a problem:

So if you're using C++14, looks like it may be best to avoid scanf/printf now.

Edit: As pointed out below, a possible workaround is adding "#include <stdio.h>" before all other headers to the code, but this may break other things in the standard library (I don't know exactly what): 20295608

»
10 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится -22 Проголосовать: не нравится

.

»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

So after half a year...**C++17** will be supported?

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +34 Проголосовать: не нравится

__int128 is still not supported... Linux g++ supports it and thus it is available in most of online judges including ICPC WF judge.

»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Can anyone help? Where can I get a C++14 for free? Does anyone has a hyperlink leads to the download page?

»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

pbox install mingw-w64: FATAL [2016-08-31 16:20:50,263] Unexpected error: Can't find mingw-w64$6.2.0.pbox.7z for 'mingw-w64$6.2.0'. Are you sure the package exists? java.lang.RuntimeException: Can't find mingw-w64$6.2.0.pbox.7z for 'mingw-w64$6.2.0'. Are you sure the package exists? at me.pbox.command.InstallCommand.run(InstallCommand.java:44) at me.pbox.command.DefaultCommand.run(DefaultCommand.java:21) at me.pbox.Main.main(Main.java:104)

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится

20301838: MS C++, scanf, 1559 ms

20301823 : GNU C++11, scanf, 1731 ms

20301815 : GNU C++14, scanf, TLE (time limit 3 seconds)

<cstdio> included

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Свершилось!!! Спасибо MikeMirzayanov.

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

Those who are using Windows 10 and anniversary update, they will get linux beta version in developer mode. I am not sure about earlier version of windows 10 but this one I have tried. I think this will remove the necessity of CYGWIN or other tools for windows.

How to enable it — Steps to follow — 1) go to settings 2) update and security 3) for developers, click on developer mode

After that- 1) open control panel 2) go to program and features(if you can't find it go to uninstall program) 3) you will see turn features on or off(you can directly search it in cortona or search bar), click on it 4) you will see "window subsystem for linux beta", include the folder and its sub folders and now you have workable linux.

»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Thank you Mike for your work making this feature possible :)

»
10 лет назад, скрыть # |
 
Проголосовать: нравится -13 Проголосовать: не нравится

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится

I'm wondering if this is the first blog, which has +1000 upvotes ?

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +19 Проголосовать: не нравится

When C++ 14 will appear on Polygon?

»
10 лет назад, скрыть # |
 
Проголосовать: нравится +13 Проголосовать: не нравится

Не понимаю: в каком смысле сложно обновить C++11 до GCC 6? Надо просто скопировать конфигурацию C++14 и добавить флаг -std=gnu++11.

»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Подскажите, пожалуйста, есть ли страница, где собраны актуальные сведения по списку поддерживаемых компиляторов и используемых флагах?
Ссылку на FAQ не наблюдаю, гуглом ищется Entry #79, но там, к примеру, нет упоминания о GCC 6.2.0.