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

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

8
Является ли std :: vector копированием объектов с помощью push_back?
После многих исследований с использованием valgrind я пришел к выводу, что std :: vector делает копию объекта, который вы хотите push_back. Это действительно так ? Вектор не может хранить ссылку или указатель на объект без копии ?! Спасибо
169 c++  stl  stdvector 

20
Преимущества цикла std :: for_each over for
Существует ли какое - либо преимущество std::for_eachнад forциклом? Мне std::for_eachтолько кажется, что мешает удобочитаемости кода. Почему тогда некоторые стандарты кодирования рекомендуют его использовать?
168 c++  stl  foreach  coding-style 

11
Как эффективно очистить очередь std :: queue?
Я использую std :: queue для реализации класса JobQueue. (В основном этот класс обрабатывает каждую работу в порядке FIFO). В одном сценарии я хочу очистить очередь за один раз (удалить все задания из очереди). Я не вижу четкого метода, доступного в классе std :: queue. Как эффективно реализовать метод clear …
166 c++  stl  queue 

10
Должен ли я хранить целые объекты или указатели на объекты в контейнерах?
Проектирование новой системы с нуля. Я буду использовать STL для хранения списков и карт определенных долгоживущих объектов. Вопрос: Должен ли я гарантировать, что мои объекты имеют конструкторы копирования и хранят копии объектов в моих контейнерах STL, или лучше вообще управлять жизнью и областью действия и просто хранить указатели на эти …
162 c++  stl  pointers 

3
Как получить std :: vector указатель на необработанные данные?
Я пытаюсь использовать std::vectorв качестве charмассива. Моя функция принимает пустой указатель: void process_data(const void *data); Прежде чем я просто использовал этот код: char something[] = "my data here"; process_data(something); Который работал как ожидалось. Но теперь мне нужна динамичность std::vector, поэтому я попробовал этот код вместо этого: vector<char> something; *cut* process_data(something); …
160 c++  stl  vector 

3
Каковы гарантии сложности стандартных контейнеров?
Видимо ;-) стандартные контейнеры предоставляют некоторую форму гарантий. Какого рода гарантии и каковы различия между различными типами контейнеров? Работая со страницы SGI (о STL ), я придумал это: Container Types: ================ Container: Forward Container Reverse Container Random Access Container Sequence Front Insert Sequence Back Insert Sequence Associative Container Simple Associative …
160 c++  stl  containers  big-o 

9
C ++ valarray против вектора
Я очень люблю векторы. Они изящны и быстры. Но я знаю, что существует то, что называется valarray. Зачем мне использовать valarray вместо вектора? Я знаю, что у valarrays есть некоторый синтаксический сахар, но кроме этого, когда они полезны?

6
Известен ли порядок итерации через std :: map (и гарантирован стандартом)?
Я имею в виду, что мы знаем, что std::mapэлементы отсортированы по ключам. Итак, допустим, что ключи являются целыми числами. Если я итерация от std::map::begin()с std::map::end()использованием for, делает стандартную гарантию того, что я буду перебирать , следовательно , через элементы с ключами, сортируются в порядке возрастания? Пример: std::map<int, int> map_; map_[1] …
158 c++  dictionary  stl  standards 

2
Что означает итератор-> second?
В C ++, какой тип std::map<>::iterator? Мы знаем, что объект itтипа std::map<A,B>::iteratorимеет перегруженную версию, operator ->которая возвращает a std::pair<A,B>*, и что std::pair<>элемент a имеет firstи second. Но чему соответствуют эти два члена и почему мы должны получить доступ к значению, хранящемуся на карте, как it->second?
157 c++  stl  iterator 


5
Когда векторы распределяются, они используют память в куче или стеке?
Все ли следующие утверждения верны? vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack vector<Type*> vect; //vect will be on stack …
152 c++  stl  vector  stack  heap 

3
Как проверить, содержит ли std :: map ключ без вставки?
Единственный способ, который я нашел для проверки на наличие дубликатов, - это вставка и проверка std::pair.secondfor false, но проблема в том, что он по-прежнему вставляет что-то, если ключ не используется, тогда как мне нужна map.contains(key);функция.
148 c++  stl  map 


11
Как удалить элемент из вектора stl с определенным значением?
Я просматривал документацию API для вектора stl и заметил, что в классе вектора не было метода, который позволял бы удалить элемент с определенным значением. Это похоже на обычную операцию, и кажется странным, что для этого нет встроенного способа.
146 c++  stl 


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