Я хочу выполнить операцию для приведенного ниже упражнения, в котором я пытаюсь добавить элемент из набора строк в вектор наборов строк.
#include <iostream>
#include <set>
#include <vector>
int main() {
std::set<std::string> remaining_cards = {"2S", "3S", "4S", "5S", "6S"};
std::vector<std::set<const std::string>> player_cards;
int random_number;
random_number=2;
auto it = remaining_cards.cbegin();
std::advance(it, random_number);
std::cout << *it << std::endl;
// add one element to a vector of sets of strings from set of strings
player_cards.emplace_back(*it);
// remove that element from the original set
remaining_cards.erase(it);
return 0;
}
У меня есть следующие вопросы:
- Почему я получаю сообщение об ошибке
::const_reference = const std::basic_string<char>&]' cannot be overloaded.
- Я попытался удалить
const
из объявления player_cards
, но затем я получил no matching function for call to 'std::set<std::basic_string<char> >::set(const std::basic_string<char>&)
- Когда я делаю
emplace_back(*it);
нужно ли разыменовывать it
? - Я подозреваю, что мои проблемы возникают из-за того, что я пытаюсь поместить элемент набора в вектор наборов строк. Нужно ли сначала создавать набор элемента, на который указывает итератор? Я предполагаю, что он указывает только на строку.
- Разве emplace_back не может напрямую создавать набор?
- Могу ли я сделать что-то вроде
emplace_back(std::set(*it));
Вполне возможно, что все вышеперечисленное может быть концептуально неправильным, поскольку я новичок в c ++, но я пытаюсь понять, как лучше всего добавить элемент из набора в вектор наборов. Это кажется сложнее, чем ожидалось.