Home

Search IconIcon to open search

C++ learning log

# Various notes

1
2
3
for (size_t i = 0; i != data.size(); ++i) {
    std::cout << data[i] << " ";
}

Это каноническая форма записи такого цикла: в ней принято использовать сравнение != и префиксный ++i. Для целых чисел не будет разницы, если написать это как-то иначе (например, через < и постфиксный i++), но потом, когда вы будете писать аналогичные циклы для итераторов других контейнеров, разница появится. Давайте привыкнем всегда оформлять цикл по индексам так.

Пачиму?

std::getline(std::cin, line) doesn’t skip empty lines, just std::cin does.

copy elision

What is RandomAccessIterator and how iterators work in C++ in general?

You can define functions in structs:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
struct Date {
  int year = 1970;
  int month = 12;
  int day = 1;

  // could also use std::tie
  bool operator<(const Date& rhs) const {
    if (year != rhs.year) {
      return year < rhs.year;
    }
    if (month != rhs.month) {
      return month < rhs.month;
    }
    return day < rhs.day;
  }
};

There is std::string_view, which is pretty cool.