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

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


6
Чому добре повернути 'вектор' з функції?
Будь ласка, врахуйте цей код. Цей тип коду я бачив уже кілька разів. words- локальний вектор. Як можливо повернути його з функції? Чи можемо ми гарантувати, що він не помре? std::vector<std::string> read_file(const std::string& path) { std::ifstream file("E:\\names.txt"); if (!file.is_open()) { std::cerr << "Unable to open file" << "\n"; std::exit(-1); } …

5
Використання призначеного для порівняння std :: set
На цей питання є відповіді на Stack Overflow на російському : Компаратор для набору Я намагаюся змінити типовий порядок елементів у наборі цілих чисел, які мають бути лексикографічними замість числових, і я не можу отримати наступне для компіляції з g ++: file.cpp: bool lex_compare(const int64_t &a, const int64_t &b) { …
108 c++  stl 

4
Як я безпечно передаю об'єкти, особливо STL-об’єкти, до DLL і з нього?
Як я передаю об'єкти класу, особливо об'єкти STL, до DLL C ++? Моя програма повинна взаємодіяти з сторонніми плагінами у вигляді файлів DLL, і я не можу контролювати, з якого компілятора ці плагіни побудовані. Я знаю, що для об'єктів STL немає гарантованого ABI, і я стурбований причиною нестабільності в моєму …
106 c++  windows  dll  stl  abi 

9
Де я можу отримати «корисний» алгоритм пошуку бінарного C ++?
Мені потрібен алгоритм бінарного пошуку, сумісний з контейнерами ST + C ++, щось подібне std::binary_searchдо <algorithm>заголовка стандартної бібліотеки , але мені він потрібен, щоб повернути ітератор, який вказує на результат, а не простий булевий сигнал, який повідомляє мені, чи існує елемент. (Зі сторони, про що, мабуть, думав стандартний комітет, коли …

10
Чому std :: set не має функції "містить" член?
Я активно використовую std::set<int>і часто мені просто потрібно перевірити, чи містить такий набір число чи ні. Мені було б природно писати: if (myset.contains(number)) ... Але через відсутність containsчлена мені потрібно написати громіздкий: if (myset.find(number) != myset.end()) .. або не так очевидно: if (myset.count(element) > 0) .. Чи є причина такого …
103 c++  stl  stdset 


6
рядок c_str () проти даних ()
Я прочитав кілька місць про те, що різниця між c_str()і data()(в STL та інших реалізаціях) полягає в тому, що c_str()завжди нульове припинення, а data()ні. Наскільки я бачив у фактичних реалізаціях, вони або роблять те саме, або data()викликають c_str(). Що я тут пропускаю? Який правильніше використовувати в яких сценаріях?
102 c++  stl  c-str 

5
Стирання елементів з вектора
Я хочу очистити елемент від вектора за допомогою методу стирання. Але проблема тут полягає в тому, що елемент не гарантовано виникає лише один раз у векторі. Він може бути присутнім кілька разів, і мені потрібно очистити їх усі. Мій код приблизно такий: void erase(std::vector<int>& myNumbers_in, int number_in) { std::vector<int>::iterator iter …
101 c++  vector  stl  erase 

3
Чи повільна реалізація gcc std :: unordered_map? Якщо так - чому?
Ми розробляємо високоефективне програмне забезпечення на C ++. Там нам потрібна паралельна хеш-карта та реалізована. Тому ми написали орієнтир, щоб визначити, наскільки повільніше порівняно з нашою паралельною хеш-картою std::unordered_map. Але, std::unordered_mapздається, це надзвичайно повільно ... Отже, це наш мікро-орієнтир (для паралельної карти ми породили нову нитку, щоб переконатися, що блокування …

4
C ++ доступ до елементу карти const
Я намагався використовувати оператор [] для доступу до елемента в const C ++ карті, але цей метод не вдався. Я також намагався використовувати "at ()", щоб зробити те саме. Це спрацювало цього разу. Однак я не зміг знайти жодної посилання на використання "at ()" для доступу до елемента в const …
100 c++  stl  map  const 

2
Чому в C ++ 20 вводиться std :: ssize ()?
C ++ 20 представив std::ssize()безкоштовну функцію, як показано нижче: template <class C> constexpr auto ssize(const C& c) -> std::common_type_t<std::ptrdiff_t, std::make_signed_t<decltype(c.size())>>; Можлива реалізація, схоже, використовує static_castдля перетворення повернутого значення size()функції члена cl ass C в його підписаний аналог. Оскільки size()функція члена C завжди повертає негативні значення, чому б хто-небудь хотів зберігати …
99 c++  stl  unsigned  signed  c++20 

6
Чому вектор <bool> не є контейнером STL?
Пункт 18 книги Скотта Мейєрса « Ефективний STL: 50 конкретних способів покращити використання стандартної бібліотеки шаблонів» говорить про те, щоб уникати, vector &lt;bool&gt;оскільки це не контейнер STL і він насправді не містить bools. Наступний код: vector &lt;bool&gt; v; bool *pb =&amp;v[0]; не буде компілювати, порушуючи вимоги щодо контейнерів STL. Помилка: …

6
Сучасний спосіб фільтрувати контейнер STL?
Повертаючись до C ++ після років C #, мені було цікаво, яким буде сучасний - читайте: C ++ 11 - спосіб фільтрації масиву, тобто як ми можемо досягти чогось подібного до цього запиту Linq: var filteredElements = elements.Where(elm =&gt; elm.filterProperty == true); Для того, щоб відфільтрувати вектор елементів ( stringsзаради …
99 c++  c++11  stl 


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