[Mac tutorial] Setting up C++ for Competitive Programming

Правка en4, от BunnyWarlock, 2023-12-21 18:20:31
I have done most of my contests using a 2015 MacBook Pro, and my experience, for the most part, was not as enjoyable as when I did contests using my Windows PC. I saw that my Mac compiled using C++98, even though my gcc compiler was up to date, so I could not use stuff like range-based loop, auto, etc in my code. I got used to it, but recently I started looking for a fix again, and luckily I was able to do it.

Installing GCC

Mac's default C++ compiler Clang does not include many of the libraries provided by GCC, which is regularly used by competitive programmers, like #include <bits/stdc++.h> and Policy Based Data Structures. So you're missing out by not using GCC.

First set up homebrew in your mac and install gcc using brew install gcc. To find more details about this step check the links provided at the end.

Using GCC to the fullest

GCC already supports up to the latest C++ version but is defaulted to older ones for some reason. To remedy this you first need to know the version of gcc you are using. 1. Open Finder and click Go > Go to Folder on the top menu bar. 2. Type /usr/local/Cellar/gcc in the search box and press Return to open. 3. Then go to (whatever version number is here) -> bin. Here in the bin folder, you can see the gcc and g++ versions.

Mine is version 13
Теги mac, gcc, c++20, compiler

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en11 Английский BunnyWarlock 2023-12-21 19:49:04 1 Tiny change: ' `g++-13 --std=c++20' -> ' `g++-13 -std=c++20'
en10 Английский BunnyWarlock 2023-12-21 19:48:31 4 Tiny change: ' --std=c++17 <filename' -> ' --std=c++20 <filename'
en9 Английский BunnyWarlock 2023-12-21 19:47:51 10
en8 Английский BunnyWarlock 2023-12-21 19:44:22 196 Tiny change: 'en.\n\n3. from this s' -> 'en.\n\n3. From this s' (published)
en7 Английский BunnyWarlock 2023-12-21 19:32:35 1269 Tiny change: 'oiler>\n\n<spoil' -> 'oiler>\n\n\n<spoil'
en6 Английский BunnyWarlock 2023-12-21 19:23:50 365 Tiny change: 'o do it.\n[cut]\n\' -> 'o do it.\n\n[cut]\n\'
en5 Английский BunnyWarlock 2023-12-21 18:37:23 1337
en4 Английский BunnyWarlock 2023-12-21 18:20:31 610 Tiny change: '/11080).\nFirst se' -> '/11080).\n\nFirst se'
en3 Английский BunnyWarlock 2023-12-21 18:03:31 364
en2 Английский BunnyWarlock 2023-12-21 17:55:57 33 Tiny change: '~~\n\n\n\n~~' -> '~~\n\n\n\n\n~~'
en1 Английский BunnyWarlock 2023-12-21 17:51:32 892 Initial revision (saved to drafts)