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

В языке программирования C ++ Стандартная библиотека C ++ представляет собой набор классов и функций, которые могут быть написаны или не написаны на основном языке и являются частью C ++.

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


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

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

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


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

2
Как получить размер файла в байтах с помощью C ++ 17
Есть ли подводные камни для конкретных операционных систем, о которых я должен знать? Есть много дубликатов ( 1 , 2 , 3 , 4 , 5 ) этого вопроса, но ответы на них были даны несколько десятилетий назад. Сегодняшние ответы на многие из этих вопросов неверны. Методы из других (старых …


1
Почему вектор <bool> :: const_reference в libc ++ не является bool?
Раздел 23.3.7 Класс vector&lt;bool&gt;[vector.bool], параграф 1 гласит: template &lt;class Allocator&gt; class vector&lt;bool, Allocator&gt; { public: // types: typedef bool const_reference; ... Однако эта программа не компилируется при использовании libc ++: #include &lt;vector&gt; #include &lt;type_traits&gt; int main() { static_assert(std::is_same&lt;std::vector&lt;bool&gt;::const_reference, bool&gt;{}, "?"); } Кроме того, я отмечаю, что стандарт C ++ был …

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

9
Почему в стандартной библиотеке C ++ нет transform_if?
Возник случай использования, когда нужно сделать условную копию (1. выполнимая с copy_if), но из контейнера значений в контейнер указателей на эти значения (2. выполнимая с transform). С доступными инструментами я не могу сделать это менее чем за два шага: #include &lt;vector&gt; #include &lt;algorithm&gt; using namespace std; struct ha { int …

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

4
Как сравнить сигнатуру двух функций?
Есть ли способ проверить, имеют ли две функции одинаковую подпись? Например: 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есть единственная комбинация функций, которую следует вернуть true.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.