Вопросы с тегом «stl»

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


5
C ++ Оператор двойного адреса? (&&)
Я читаю исходный код STL и понятия не имею, что &&должен делать адресный оператор. Вот пример кода из stl_vector.h: vector& operator=(vector&& __x) // <-- Note double ampersands here { // NB: DR 675. this->clear(); this->swap(__x); return *this; } Имеет ли смысл «Адрес адреса»? Почему у него два оператора адреса вместо …

6
Как мне указать указатель на перегруженную функцию?
Я хочу передать перегруженную функцию в std::for_each()алгоритм. Например, class A { void f(char c); void f(int i); void scan(const std::string& s) { std::for_each(s.begin(), s.end(), f); } }; Я ожидаю, что компилятор разрешит f()тип итератора. По-видимому, он (GCC 4.1.2) этого не делает. Итак, как я могу указать, какой f()я хочу?
137 c++  stl 

3
Что произойдет, если вы вызовете erase () для элемента карты во время итерации от начала до конца?
В следующем коде я перебираю карту и проверяю, нужно ли удалить элемент. Безопасно ли стереть элемент и продолжить итерацию, или мне нужно собрать ключи в другом контейнере и выполнить второй цикл для вызова erase ()? map<string, SerialdMsg::SerialFunction_t>::iterator pm_it; for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++) { if (pm_it->second == …
133 c++  stl  iterator 

7
Как отсортировать вектор пар на основе второго элемента пары?
Если у меня есть вектор пар: std::vector<std::pair<int, int> > vec; Есть ли простой способ отсортировать список в порядке возрастания на основе второго элемента пары? Я знаю, что могу написать небольшой функциональный объект, который будет выполнять эту работу, но есть ли способ использовать существующие части STL и std::lessвыполнять работу напрямую? EDIT: …
133 c++  stl  stdvector 

2
Как установить начальный размер std :: vector?
У меня есть, vector<CustomClass*>и я помещаю много элементов в вектор, и мне нужен быстрый доступ, поэтому я не использую список. Как установить начальный размер вектора (например, 20 000 разрядов, чтобы не копировать при вставке нового)?
131 c++  stl 

7
Почему std :: queue :: pop не возвращает значение?
Я просмотрел эту страницу, но не могу понять причину того же. Там упоминается, что "для него более разумно вообще не возвращать никакого значения и требовать от клиентов использования front () для проверки значения в начале очереди" Но проверка элемента из front () также требует, чтобы этот элемент был скопирован в …
123 c++  stl 


10
Как скопировать содержимое массива в std :: vector в C ++ без цикла?
У меня есть массив значений, который передается моей функции из другой части программы, которую мне нужно сохранить для последующей обработки. Так как я не знаю, сколько раз будет вызываться моя функция, прежде чем придет время обрабатывать данные, мне нужна динамическая структура хранения, поэтому я выбрал файл std::vector. Я не хочу …
123 c++  stl  vector  copy 


13
remove_if эквивалент для std :: map
Я пытался стереть ряд элементов с карты в зависимости от определенных условий. Как это сделать с помощью алгоритмов STL? Сначала я думал об использовании, remove_ifно это невозможно, поскольку remove_if не работает для ассоциативного контейнера. Есть ли какой-либо эквивалентный алгоритм remove_if, который работает для карты? В качестве простого варианта я подумал …
118 c++  stl  map 

4
Как повторно использовать ostringstream?
Я хотел бы очистить и повторно использовать поток ostringstream (и базовый буфер), чтобы моему приложению не приходилось делать столько распределений. Как вернуть объект в исходное состояние?
117 c++  stl  reset  ostringstream 

4
Как перегрузить std :: swap ()
std::swap() используется многими стандартными контейнерами (такими как std::list и std::vector) во время сортировки и даже назначения. Но стандартная реализация swap() очень обобщена и довольно неэффективна для пользовательских типов. Таким образом, эффективность может быть повышена за счет перегрузки std::swap()с помощью реализации конкретного типа. Но как его реализовать, чтобы он использовался контейнерами …

5
Доступ к карте C ++ отбрасывает квалификаторы (const)
Следующий код говорит, что передача карты as constв operator[]метод отбрасывает квалификаторы: #include <iostream> #include <map> #include <string> using namespace std; class MapWrapper { public: const int &get_value(const int &key) const { return _map[key]; } private: map<int, int> _map; }; int main() { MapWrapper mw; cout << mw.get_value(42) << endl; return …
113 c++  stl  const  maps 

9
Какой способ вставки на карту является предпочтительным / идиоматическим?
Я выделил четыре разных способа вставки элементов в std::map: std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); Какой из них предпочтительный / идиоматический? (А есть ли другой способ, о котором я не подумал?)
113 c++  stl  insert  stdmap  std-pair 

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