Pull to refresh
-1
0
Gunnar @Gunnar

User

Send message

Неприятная особенность std::list, о которой не все знают

Reading time3 min
Views55K
Двусвязный список — это фундаментальная структура данных, о которой все знают и повсеместно используют. Все знают почему и в каких случаях он эффективнее вектора, какие операции имеют линейную сложность, а какие — константную…

Хотя постойте, знаете ли вы какова сложность функции size ()?
«Конечно же я знаю — О(1)!», ответят многие из вас, «Что может быть проще?»

size_type  size() const                             
{
       return _size;
}


Тривиально, эффективно и безопасно, не так ли?
Я бы реализовал эту функцию именно так, большинство из вас сделали бы тоже самое.

Однако, те, кто писал реализацию GNU STL, другого мнения на этот счет.
Читать дальше →
Total votes 111: ↑96 and ↓15+81
Comments92

Заставляем компилятор отличать коров от галош

Reading time3 min
Views2.1K
Как известно, в С++, как и в его предке С, инструкция typdef не создает новых типов, а всего лишь псевдонимы для существующих. И если в слаботипизированном С это не было проблемой, то в строгом С++ это приводит к недоумению, особенно среди новичков, а так же трудноуловимым багам в программе.

В этой статье мы попробуем обойти эту неприятную особенность.
Читать дальше →
Total votes 30: ↑22 and ↓8+14
Comments17

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Registered
Activity