Запитання з тегом «stl»

Стандартна бібліотека шаблонів або STL - це бібліотека C ++ із загальних контейнерів, ітераторів, алгоритмів та об'єктів функцій. Коли C ++ було стандартизовано, велика частина STL була прийнята до Стандартної бібліотеки, і ці частини в Стандартній бібліотеці також іноді помилково називають "STL".


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 

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

3
Що станеться, якщо ви викликаєте стирання () на елементі карти під час ітерації від початку до кінця?
У наступному коді я переглядаю карту і перевіряю, чи потрібно стирати елемент. Чи безпечно стирати елемент і зберігати ітерацію чи мені потрібно збирати ключі в інший контейнер і робити другий цикл для виклику стирання ()? 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 місць, щоб уникнути копіювання, коли я вставляю новий)?
130 c++  stl 

7
Чому std :: queue :: pop не повертає значення.?
Я пройшов через це сторінку, але не можу зрозуміти причину того ж. Там це згадується "розумніше взагалі не повертати значення і вимагати від клієнтів використовувати front () для перевірки значення в передній частині черги" Але огляд елемента спереду () також вимагав копіювання цього елемента в lvalue. Наприклад, у цьому сегменті …
123 c++  stl 

10
Як ви скопіюєте вміст масиву в std :: vector в C ++, не маючи циклу?
У мене є масив значень, який передається моїй функції з іншої частини програми, яку мені потрібно зберігати для подальшої обробки. Оскільки я не знаю, скільки разів буде викликана моя функція, перш ніж настане час обробляти дані, мені потрібна динамічна структура зберігання, тому я вибрав a std::vector. Мені не хочеться робити …
122 c++  stl  vector  copy 



13
delete_if еквівалент std :: map
Я намагався стерти з карти різноманітні елементи, залежно від конкретних умов. Як це зробити за допомогою алгоритмів STL? Спочатку я думав використовувати, remove_ifале це неможливо, оскільки Remove_if не працює для асоціативного контейнера. Чи існує якийсь еквівалентний алгоритм "remove_if", який працює для карти? Як простий варіант, я подумав прокрутити карту і …
118 c++  stl  map 


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

5
C ++ карта відкидає класифікатори доступу (const)
Наступний код каже , що проходячи карту , як 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) << …
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)); Який із них є кращим / ідіоматичним? (А чи є інший спосіб, про який я не думав?)
111 c++  stl  insert  stdmap  std-pair 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.