Вопросы с тегом «c++-standard-library»

777
Как преобразовать std :: string в нижний регистр?

Я хочу преобразовать std::stringв нижний регистр. Я знаю о функции tolower(), однако в прошлом у меня были проблемы с этой функцией, и в любом случае она вряд ли идеальна, так как использование с std::stringтребовало бы итерации по каждому символу. Есть ли альтернатива, которая работает 100%...

446
В чем разница между «STL» и «C ++ Standard Library»?

Кто-то обратил мое внимание на эту статью , утверждая, что (я перефразирую) термин STL неправильно используется для ссылки на всю Стандартную библиотеку C ++ вместо частей, взятых из SGI STL. (...) это относится к «STL», несмотря на то, что очень немногие люди все еще используют STL (который был...

159
C ++ valarray против вектора

Я очень люблю векторы. Они изящны и быстры. Но я знаю, что существует то, что называется valarray. Зачем мне использовать valarray вместо вектора? Я знаю, что у valarrays есть некоторый синтаксический сахар, но кроме этого, когда они...

147
Удаление элементов из std :: set во время итерации

Мне нужно пройти через набор и удалить элементы, которые соответствуют заранее определенным критериям. Это тестовый код, который я написал: #include <set> #include <algorithm> void printElement(int value) { std::cout << value << " "; } int main() { int initNum[] = { 0, 1, 2,...

104
Каков механизм оптимизации коротких строк в libc ++?

Этот ответ дает хороший общий обзор оптимизации коротких строк (SSO). Однако хотелось бы подробнее узнать, как это работает на практике, в частности в реализации libc ++: Насколько короткой должна быть строка, чтобы иметь право на SSO? Это зависит от целевой архитектуры? Как реализация различает...

97
Как получить размер файла в байтах с помощью C ++ 17

Есть ли подводные камни для конкретных операционных систем, о которых я должен знать? Есть много дубликатов ( 1 , 2 , 3 , 4 , 5 ) этого вопроса, но ответы на них были даны несколько десятилетий назад. Сегодняшние ответы на многие из этих вопросов неверны. Методы из других (старых QA) на .sx stat.h...

87
Надежны ли экспериментальные возможности современного C ++ для долгосрочных проектов?

У меня есть проект, который в настоящее время использует C ++ 11/14, но для этого требуется что-то вроде того std::filesystem, что доступно только в C ++ 17, и, следовательно, у меня нет возможности его использовать. Однако я вижу, что в моем текущем компиляторе он доступен как...

84
Почему в стандартной библиотеке C ++ нет transform_if?

Возник случай использования, когда нужно сделать условную копию (1. выполнимая с copy_if), но из контейнера значений в контейнер указателей на эти значения (2. выполнимая с transform). С доступными инструментами я не могу сделать это менее чем за два шага: #include <vector> #include...

44
Почему оператор! = Удален в C ++ 20 для многих стандартных типов библиотек?

Согласно cppreference , std::type_info::operator!=удаляется с C ++ 20, однако, по- std::type_info::operator==видимому, остается. В чем причина? Я мог бы согласиться с тем, что сравнивать неравенство бессмысленно, но тогда сравнивать равенство было бы так же бессмысленно, не так ли? Точно так же...

35
Как сравнить сигнатуру двух функций?

Есть ли способ проверить, имеют ли две функции одинаковую подпись? Например: int funA (int a, int b); int funB (int a, int b); float funC (int a, int b); int funD (float a, int b); В этом примере funAи funBесть единственная комбинация функций, которую следует вернуть...

29
Почему `std :: string :: find ()` не возвращает конечный итератор при сбоях?

Я считаю, что поведение std::string::findнесовместимо со стандартными контейнерами C ++. Например std::map<int, int> myMap = {{1, 2}}; auto it = myMap.find(10); // it == myMap.end() Но для строки, std::string myStr = "hello"; auto it = myStr.find('!'); // it == std::string::npos Почему бы не...

14
GCC9 позволяет избежать бесполезного состояния std :: option?

Недавно я следил за обсуждением Reddit, которое привело к хорошему сравнению std::visitоптимизации по компиляторам. Я заметил следующее: https://godbolt.org/z/D2Q5ED И GCC9, и Clang9 (я полагаю, они используют один и тот же stdlib) не генерируют код для проверки и создания бесполезного исключения,...

9
Как shift_right () предназначен для реализации в C ++ 20?

В C ++ 20 <algorithm>заголовок получает два новых алгоритма: shift_left()иshift_right() . Оба они принимают любой LegacyForwardIterator. Ведь shift_left()указано, что «шаги выполняются в порядке возрастания, iначиная с ​0»; для shift_right(), указано, что «если ForwardItсоответствует...