Вопросы по теме 'c++-standard-library'

Странная ошибка при вставке в С++ std::map
Я пытаюсь вставить несколько пар значений в std::map. В первом случае я получаю указатель на карту, разыменовываю ее и использую оператор индекса для присвоения значения. то есть (*foo)[index] = bar; Позже, когда я пытаюсь выполнить...
3355 просмотров

Как заставить IOStream работать лучше?
Большинство пользователей C++, изучивших C, предпочитают использовать семейство функций printf / scanf , даже когда они пишут код на C++. Хотя я признаю, что нахожу интерфейс намного лучше (особенно POSIX-подобный формат и локализацию), кажется,...
29006 просмотров

В чем разница между стандартной библиотекой STL и C ++?
Кто-то принес эту статью в мою внимание, что утверждает, что (я перефразирую) термин STL неправильно используется для обозначения всей стандартной библиотеки C ++, а не частей, взятых из SGI STL. (...) это относится к STL, несмотря на то, что...
99784 просмотров
schedule 11.07.2022

Делает ли std::vector::insert() недействительными итераторы, если в векторе достаточно места (созданного за счет резерва)?
Ответ на Как самостоятельно скопировать вектор? меня немного смутил об инвалидации итератора. В некоторой литературе говорится: «Если вы используете вставку, push_back и т. д., считайте все итераторы недействительными». Это ясно, это может...
2478 просмотров

Как вставить rvalue в карту после вызова на ней функции
Я пытаюсь использовать std::unordered_map<std::string, std::shared_ptr<CObject>> (далее именуемый картой), чтобы иметь возможность использовать карту для вызова одних и тех же функций для разных объектов на основе их имени. Указатели...
213 просмотров

Потокобезопасность контейнера стандартной библиотеки C++ по отношению к содержащимся объектам
Мой вопрос заключается в том, предоставляют ли контейнеры, такие как вектор, набор, очередь, карта, мультикарта и т. д., свои стандартные гарантии безопасности потоков (т. е. параллельные потоки могут вызывать константные методы и т. д.) независимо от...
1311 просмотров

Каковы возможные способы сделать пользовательский тип возможным ключом для карты
Недавно мне задали вопрос, как сделать настраиваемый тип возможным ключом для stl :: map. Сразу же я ответил им, что нужно перегрузить операторную функцию «‹ », чтобы поддерживать настраиваемый тип. Вот ссылка " ссылка настраиваемого типа "...
160 просмотров

Может ли реализация стандартной библиотеки специализировать стандартные типы?
Например, предположим ради аргумента, что найдена более эффективная (хранение, операции над ним) реализация для вектора целочисленных типов (по сравнению с универсальной реализацией вектора). Может ли стандартная соответствующая библиотека сделать...
144 просмотров

Как получить текущий локализованный шаблон для даты и времени std::locale
Пока я могу получить текущую локаль, но я хочу получить формат даты для этой конкретной локали. Можно ли это сделать с помощью стандартной библиотеки. #include <locale> int _tmain(int argc, _TCHAR* argv[]) { // Print the current locale...
2638 просмотров

equal_range и диапазон для
Обсуждая multimap со своими студентами, я заметил небольшое изменение, которое могло убрать часть шаблона, и мне было интересно, предлагал ли кто-нибудь это комитету по стандартизации, и если да, то каков был ответ. Канонический метод перебора...
875 просмотров

Допустимо ли для реализации стандартной библиотеки иметь определение класса, отличное от стандарта C ++?
Следующий код успешно скомпилирован с помощью clang и MSVC, но не может быть скомпилирован в GCC 6.1.0. #include <memory> template<typename R, typename T, typename... Args> T* test(R(T::*)(Args...) const) { return nullptr; } int...
285 просмотров

Насколько похожи Boost.Filesystem и стандартная библиотека файловой системы C ++?
Мне нужна библиотека файловой системы для использования с компилятором, поддерживающим C ++ 11, или компилятором, поддерживающим C ++ 14, так что это не может быть из C ++ 17. Теперь я знаю, что библиотека файловой системы в C ++ 17 основана на...
6193 просмотров

поиск гетерогенных контейнеров в C++98
В проекте, над которым я работаю, я вынужден использовать С++ 98. Имея необходимость выполнять быстрый поиск в определенных векторах структур, используя только несколько элементов этих структур в качестве ключей, я до сих пор с удовольствием...
112 просмотров

Распределенный в стеке std::string сообщает об утечке памяти valgrind
На компьютере с Linux запустите этот скрипт, чтобы скомпилировать небольшое приложение C++ и запустить его под управлением valgrind: #!/bin/bash set -x -e cd /tmp cat > main.cpp <<EOF #include <stdlib.h> // exit() #include...
631 просмотров

Почему нет оператора‹ для класса std::weak_ptr?
Я использую слабые указатели в качестве ключей на карте. Однако, когда я попытался скомпилировать, я получил уродливые сообщения, которые я интерпретировал как означающие, что мне не хватает оператора сравнения для std::weak_ptr, который, очевидно,...
756 просмотров
schedule 23.10.2022

ref-квалификаторы для оператора присваивания типов стандартных библиотек
Мне было интересно, есть ли причина, по которой оператор присваивания стандартных типов не имеет lvalue ref-qualified? Ни один из них. Из-за этого мы можем писать такие вещи, как это: std::string{} = "42"; std::string s = "hello " +...
102 просмотров

Является ли эта реализация подкачки без разрушения допустимой в соответствии со стандартом?
Я предлагаю эту реализацию swap , если она действительна, превосходит текущую реализацию std::swap : #include <new> #include <type_traits> template<typename T> auto swap(T &t1, T &t2) -> typename...
175 просмотров

Сбивающий с толку результат сравнения функции std::sort (stable_sort) с возвращаемым значением
У меня есть следующая простая программа. В test1 и test2 я пытался отсортировать 2 строки "2" и "1", и в приведенном ниже примере функция compare всегда будет возвращать false. #include <iostream> #include <vector> #include...
463 просмотров
schedule 03.10.2022

Предоставляет ли стандартная библиотека C ++ более компактную и обобщенную версию идиомы удаления-удаления?
Мы можем удалить один элемент / запись из контейнера с помощью популярной идиомы erase – remove . Однако многие из нас столкнулись бы с некоторыми проблемами при применении этой идиомы: можно легко попасть в ловушку опечаток , например...
657 просмотров

Сравнение std::string и строковых литералов в стиле C
Предположим, у меня есть следующий код: #include <iostream> #include <string> #include <iomanip> using namespace std; // or std:: int main() { string s1{ "Apple" }; cout << boolalpha; cout << (s1 ==...
572 просмотров