Update proxy_objects.md

This commit is contained in:
Dmitry Sviridkin
2024-08-16 11:57:57 +01:00
committed by GitHub
parent 6e1613d1a1
commit 98840cf30f
+3 -3
View File
@@ -14,9 +14,9 @@ auto pop_last(std::vector<T>& v) {
}
```
Вполне разумно завести себе подобную функцию, ведь имеющиеся `pop_back` у многих контейнеров и адаптеров (`stack`, `queue`) до C++20 возвращают `void`. Что очень неудобно — чаще всего мы хотим изъять последний элемент контейнера и что-то с ним сделать, а не просто выкинуть.
Вполне разумно завести себе подобную функцию, ведь имеющиеся `pop_back` у стандартных контейнеров возвращают `void`. Это очень неудобно на практике — чаще всего мы хотим изъять последний элемент контейнера и что-то с ним сделать, а не просто выкинуть.
Все ли хорошо с этой функцией? Конечно, на пустом векторе будет неопределенное поведение, но мы же написали `assert`, так что дальше все на откуп пользователю. Пусть просто пишет корректный код, а некорректный не пишет... А в остальном вроде все в порядке, да?
Все ли хорошо с этой функцией? Конечно, на пустом векторе будет неопределенное поведение, но мы же написали assert, так что дальше все на откуп пользователю. Пусть просто пишет корректный код, а некорректный не пишет… Еще есть вопросы к гарантиям исключений — ведь из-за них стандартный `pop_back()` ничего не возвращает. Но это тема другой главы. А в остальном вроде все в порядке, да?
Что ж, давайте ею пользоваться!
@@ -201,4 +201,4 @@ T sum(T a, T b)
1. https://stackoverflow.com/questions/17794569/why-isnt-vectorbool-a-stl-container
2. https://www.researchgate.net/publication/220803585_Performance_of_C_bit-vector_implementations
3. https://eigen.tuxfamily.org/dox/TopicWritingEfficientProductExpression.html
4. https://eigen.tuxfamily.org/dox/TopicLazyEvaluation.html
4. https://eigen.tuxfamily.org/dox/TopicLazyEvaluation.html