1. Как включить все стандартные библиотеки одной командой
Чтобы разом включить в проект все стандартные библиотеки, используйте #include <bits/stdc++.h>
. Это особенно полезно в условиях дефицита времени на соревнованиях по программированию.
Например, вы можете заменить этот фрагмент (и многие другие):
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
#include <set>
#include <queue>
#include <map>
Простой строкой:
#include <bits/stdc++.h>#include <bits/stdc++.h>
Но помните, что:
· <bits/stdc++.h
содержит множество заголовочных файлов, которые, возможно, и не понадобятся в конкретном проекте. А это может привести к увеличению времени компиляции.
· <bits/stdc++.h>
не является стандартным заголовочным файлом библиотеки GNU C++. Таким образом, не относящиеся к типу GCC (GNU Compiler Collection) компиляторы могут испытывать затруднения в процессе исполнения. Однако так бывает не часто!
2. Используйте auto, чтобы опустить тип данных переменной
Опустить тип данных переменной можно, используя ключевое слово auto
в 11-й и в более поздних версиях C++. Это чрезвычайно полезно в случае, когда нужно объявить переменную во время выполнения, например, при использовании итераторов.
В качестве простого примера объявим типы данных следующих переменных:
auto a = 'a';
auto t = true;
auto x = 1;
auto y = 2.0;
3. Комплексные циклы for на основе диапазона
Цикл for на основе диапазона — это представленный в 11-й версии C++ обновленный вариант традиционного цикла for
.
Синтаксис цикла for
на основе диапазона:
for(range_declaration : range_expression)
Например, можно перебрать с помощью цикла for
на основе диапазона массив чисел следующим образом:
int numbers[] = {1,2,3,4,5};
for (auto number: numbers){
cout << number << endl;
}
Также можно аналогичным образом перебирать символы в строке:
string name = "Charlie";
for (auto character: name){
cout << character << endl;
}
4. Операторы One Liner, If… Else
Операторы if … else
можно легко преобразовать в однострочные, используя тернарный оператор (известный также как условный оператор).
В качестве примера можно заменить это простое выражение:
int age = 9;
if(age < 18) {
printf("A Child");
} else {
printf("An Adult");
}
такой более аккуратной записью:
age < 18 ? printf("A Child") : printf("An Adult");
Общий синтаксис тернарного оператора:
condition ? true_expression : false_expression
Тернарный оператор широко используется и в других языках программирования, не только в C++.
Стоит учитывать, что чрезмерное использование тернарных операторов способно затруднить чтение кода программы. Их полезно использовать только тогда, когда оператор if … else
достаточно прост для восприятия в виде однострочного троичного выражения.
5. Поменять местами две переменные без использования третьей
Оператор XOR можно использовать для обмена местами двух переменных без использования третьей вспомогательной переменной. Вот пример:
int a = 1;
int b = 2;
a ^= b ^= a ^= b;
6. Оператор →
“Оператор” ->
можно использовать в цикле while
в качестве условия перехода. Например, с его помощью можно напечатать числа 9 8 7 6 5 4 3 2 1
следующим образом:
int x = 10;
while( x --> 0 ) {
printf("%d ", x);
}
Примечание: ->
— это на самом деле не оператор, а комбинация из двух операторов — -
и >
. Приведенное выше while
— это то же самое, что и while ((x — )> 0)
, которое читается как «уменьшить x
на 1
, а затем сравнить результат с 0
».
7. Преинкремент выполняется быстрее, чем пост-инкремент
В C++ есть два оператора, которые можно использовать для увеличения значения на 1
:
· Предварительный инкремент (pre-increment) ++i
— перед присвоением переменной значения оно увеличивается на единицу.
· Последующий инкремент (post-increment) i++
— после присвоения переменной значения оно увеличивается на единицу.
В результате преинкремент ( ++i
) работает быстрее постинкремента, потому что последний сохраняет копию предыдущего значения, а преинкремент непосредственно добавляет 1 без копирования предыдущего значения.
8. Комбинируйте присвоение с вызовом функции
C ++ позволяет комбинировать присвоение и вызов функции. Например, имеем:
int i;
i = 10;
printf("%d", i); // печать 10
Несколько упростить код программы можно следующим образом:
int i;
printf("%d", i = 10); // печать 10
На этом все!
Читайте также:
- 4 совета по работе с потоками и мьютексами в C++
- Распознаём 50 видов текста на C++ с Plywood
- Шаблон проектирования прототипов в современном C++
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Artturi Jalli: 8 Neat C++ Programming Tricks You Should Know