stl- все статьи тега ➜ страница 3


Почему мы не можем объявить std:: vector?

Потратив довольно много времени на разработку в C#, я заметил, что если вы объявляете абстрактный класс с целью использования его в качестве интерфейса, вы не можете создать вектор этого абстрактного класса для хранения экземпляров дочерних классов. #pragma once #include <iostream> #include <vector> using namespace std; class IFunnyInterface { public: virtual void IamFunny() = 0; }; class FunnyImpl: IFunnyInterface { public: virtual void IamFunny() { cout &lt ...

Как использовать приоритетную очередь STL для объектов?

class Person { public: int age; }; Я хочу, чтобы хранить объекты класса Person в приоритетной очереди. priority_queue< Person, vector<Person>, ??? > Я думаю, что мне нужно определить класс для сравнения вещи, но я не уверен в этом. также, Когда мы пишем, priority_queue< int, vector<int>, greater<int> > как работает большее? ...

Контейнеры C++ STL: в чем разница между deque и list?

в чем разница между ними? Я имею в виду, что все методы одинаковы. Таким образом, для пользователя они работают одинаково. Это правильно?? ...

В чем разница между std::set и std::vector?

сейчас я изучаю STL. Я читал о set контейнер. У меня есть вопрос, когда вы хотите использовать set? После прочтения описание набора похоже, это бесполезно, потому что мы можем заменить его на vector. Не могли бы вы сказать плюсы и cos для vector vs set контейнеров. Спасибо ...

В чем разница между std::string и std::basic string? А зачем нужны оба?

в чем разница между std::string и std::basic_string? А зачем нужны оба? ...

В чем преимущество multimap над картой векторов?

Я не понимаю, почему multimap существует, если мы можем создать карту векторов или карту множеств. Для меня единственными отличиями являются: используя equal_range в multimap для получения элементов ключа и в карте векторов мы просто используем [] оператор и векторных элементов. используя multimap.insert(make_pair(key,value)) в multimap для добавления элементов и map_of_vectors[key].push_back(value) в карте векторов. так зачем использовать multimap? Для меня лучше иметь вектор, чем два итерат ...

Является ли хэш-карта частью STL?

быстрый question...Is hash_map часть STL? ...

Что быстрее, повторяя вектор STL с помощью vector:: iterator или с помощью at()?

С точки зрения производительности, что будет работать быстрее? Есть ли разница? Это зависит от платформы? //1. Using vector<string>::iterator: vector<string> vs = GetVector(); for(vector<string>::iterator it = vs.begin(); it != vs.end(); ++it) { *it = "Am I faster?"; } //2. Using size_t index: for(size_t i = 0; i < vs.size(); ++i) { //One option: vs.at(i) = "Am I faster?"; //Another option: vs[i] = "Am I faster?"; } ...

std:: transform () и toupper (), без соответствующей функции

я попробовал код из этого вопроса C++ std:: transform() и toupper() ..почему это не удается? #include <iostream> #include <algorithm> int main() { std::string s="hello"; std::string out; std::transform(s.begin(), s.end(), std::back_inserter(out), std::toupper); std::cout << "hello in upper case: " << out << std::endl; } теоретически это должно было сработать, поскольку это один из примеров в книге Джосуттиса, но он не компилируется http://ideone.com/aYnf ...

Проверить, если итератор действует

есть ли способ проверить, является ли итератор (будь то из вектора, списка, дека...) (все-таки) уникальным, т. е. не была признана недействительной? Я использую try -catch, но есть ли более прямой способ сделать это? пример: (который не работает) list<int> l; for (i = 1; i<10; i++) { l.push_back(i * 10); } itd = l.begin(); itd++; if (something) { l.erase(itd); } /* now, in other place.. check if itd points to somewhere meaningful */ if (itd != l.end()) { // blablabla ...

Удалить все элементы из C++ std:: vector

Я пытаюсь удалить все от std::vector С помощью следующего кода vector.erase( vector.begin(), vector.end() ); но это не работает. Update: разве clear не уничтожает элементы, удерживаемые вектором? Я не хочу этого, так как я все еще использую объекты, я просто хочу очистить контейнер ...

Что такое значение итератора по умолчанию?

для любого контейнера STL, который я использую, если я объявляю итератор (этого конкретного типа контейнера) с помощью конструктора по умолчанию итератора, к чему будет инициализирован итератор? например, у меня есть: std::list<void*> address_list; std::list<void*>::iterator iter; для чего будет инициализирован iter? ...