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 < ...
Как использовать приоритетную очередь 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? ...