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

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

7
Чому ми не можемо оголосити std :: vector <AbstractClass>?
Провівши досить багато часу на розробці в C #, я помітив, що якщо ви оголосите абстрактний клас з метою використання його як інтерфейсу, ви не можете створити екземпляр вектора цього абстрактного класу для зберігання екземплярів дочірніх класів. #pragma once #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class IFunnyInterface { public: …

3
як надати функцію підкачки для мого класу?
Який правильний спосіб увімкнути мої swapалгоритми STL? 1) Член swap. Чи std::swapвикористовує фокус SFINAE для використання учасника swap. 2) Вільне стояння swapв одному просторі імен. 3) Часткова спеціалізація std::swap. 4) Все вищесказане. Дякую. EDIT: Схоже, я не чітко сформулював своє запитання. В основному, у мене є шаблонний клас, і мені …
87 c++  algorithm  stl  swap 

10
Чому я вважаю за краще використовувати вектор замість deque
Оскільки вони обидва є суміжними контейнерами пам'яті; особливо мудро, деке має майже все, що має вектор, але більше, оскільки його ефективніше вставляти спереду. Чому хтось вважає std::vectorза краще std::deque?
86 c++  stl  vector  deque 

12
Скопіюйте значення карти у вектор у STL
На даний момент я працюю на шляху ефективного STL. Пункт 5 припускає, що зазвичай переважно використовувати функції-члени діапазону для їхніх одноелементних аналогів. На даний момент я хочу скопіювати всі значення на карті (тобто - мені не потрібні ключі) у вектор. Який найчистіший спосіб це зробити?
86 c++  stl  containers 

15
використовуйте std :: fill для заповнення вектора зі збільшенням чисел
Я хотів би заповнити vector&lt;int&gt;використання std::fill, але замість одного значення вектор повинен містити цифри у зростаючому порядку після. Я спробував досягти цього, повторивши третій параметр функції на одиницю, але це дало б мені лише вектори, заповнені 1 або 2 (залежно від положення ++оператора). Приклад: vector&lt;int&gt; ivec; int i = 0; …
85 c++  stl 

6
Навіщо мені std :: get_temporary_buffer?
З якою метою я повинен використовувати std::get_temporary_buffer? Стандарт говорить наступне: Отримує покажчик на сховище, достатнє для зберігання до n сусідніх T об’єктів. Я думав, що буфер буде виділено на стек, але це неправда. Відповідно до стандарту C ++ цей буфер насправді не є тимчасовим. Які переваги має ця функція перед …

4
Як я можу створити власний компаратор для карти?
typedef map&lt;string, string&gt; myMap; Коли вставляється нова пара до myMap, він буде використовувати ключ stringдля порівняння за допомогою власного компаратора рядків. Чи можна замінити цей компаратор? Наприклад, я хотів би порівняти ключ stringза довжиною, а не за алфавітом. Або існує інший спосіб сортування карти?
84 c++  stl  stdmap 

8
Не можна включити заголовки C ++, як вектор, в Android NDK
Коли я намагаюся включити будь-який клас C ++, як вектор, у свій проект Android NDK (використовуючи найновіший NDK r5b), я отримую повідомлення про помилку, подібну до наведеної нижче ... Compile++ thumb : test-libstl &lt;= test-libstl.cpp /Users/nitrex88/Desktop/Programming/EclipseProjects/STLTest/jni/test-libstl.cpp:3:18: error: vector: No such file or directory Інші люди, які повідомили про цю проблему …

1
У чому сенс рис характеру STL?
Я помічаю, що в моїй копії посилання SGI STL є сторінка про Риси характеру, але я не бачу, як вони використовуються? Чи замінюють вони функції string.h? Здається, вони не використовуються std::string, наприклад, length()метод на std::stringне використовує length()метод Риси характеру . Чому існують Риси характеру і чи використовуються вони коли-небудь на …

4
Як вибрати між картою та unordered_map?
Припустимо, я хотів зіставити дані із рядком як ключем. Який контейнер я повинен був вибрати, mapабо unordered_map? unordered_mapзаймає більше пам’яті, тож припустимо, пам’ять не є проблемою, а проблема полягає в швидкості. unordered_mapяк правило, повинні давати середню складність O (1) з найгіршим випадком O (n). У яких випадках воно потрапляло б …

17
Як імплодувати вектор рядків у рядок (елегантний спосіб)
Я шукаю найбільш елегантний спосіб імплодіювати вектор рядків у рядок. Нижче наведено рішення, яке я використовую зараз: static std::string&amp; implode(const std::vector&lt;std::string&gt;&amp; elems, char delim, std::string&amp; s) { for (std::vector&lt;std::string&gt;::const_iterator ii = elems.begin(); ii != elems.end(); ++ii) { s += (*ii); if ( ii + 1 != elems.end() ) { s …
83 c++  string  stl  stdstring  implode 

8
У std :: multiset є функція або алгоритм для стирання лише одного зразка (об'єднати або повторити), якщо елемент знайде
Можливо, це дублікат, але я не знайшов нічого пошуку: при erase(value)виклику std::multisetвсі елементи зі знайденим значенням видаляються. Єдине рішення, про яке я міг подумати: std::multiset&lt;int&gt;::iterator hit(mySet.find(5)); if (hit!= mySet.end()) mySet.erase(hit); Це нормально, але я думав, що може бути і краще. Будь-які ідеї?
83 c++  stl  multiset 

10
Чи заперечує цикл 'for' багато простих алгоритмів?
Рішення алгоритму: std::generate(numbers.begin(), numbers.end(), rand); Рішення для циклу на основі діапазону: for (int&amp; x : numbers) x = rand(); Чому я хотів би використовувати більш детальний опис std::generateна основі діапазону циклів for в C ++ 11?
81 c++  algorithm  stl  c++11  foreach 

12
char * проти std :: рядок в c ++ [закрито]
В даний час це питання не підходить для нашого формату запитань та відповідей. Ми очікуємо, що відповіді будуть підтверджені фактами, посиланнями чи експертизою, але це питання, швидше за все, вимагатиме дебатів, аргументів, опитування чи розширеного обговорення. Якщо ви вважаєте, що це питання можна покращити і, можливо, знову відкрити, відвідайте довідковий …
81 c++  stl  stdstring  arrays 

6
std :: vector :: resize () проти std :: vector :: reserve ()
Існує потік в розділі коментарів в цьому записі про використання std::vector::reserve()vs. std::vector::resize(). Ось оригінальний код: void MyClass::my_method() { my_member.reserve(n_dim); for(int k = 0 ; k &lt; n_dim ; k++ ) my_member[k] = k ; } Я вважаю, що, щоб писати елементи в vector, правильно робити те, щоб зателефонувати std::vector::resize(), а …
80 c++  stl  vector 

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