Добавить элемент из набора строк в вектор набора строк - PullRequest
2 голосов
/ 11 ноября 2019

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

#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;
}

У меня есть следующие вопросы:

  1. Почему я получаю сообщение об ошибке ::const_reference = const std::basic_string<char>&]' cannot be overloaded.
  2. Я попытался удалить const из объявления player_cards, но затем я получил no matching function for call to 'std::set<std::basic_string<char> >::set(const std::basic_string<char>&)
  3. Когда я делаю emplace_back(*it); нужно ли разыменовывать it?
  4. Я подозреваю, что мои проблемы возникают из-за того, что я пытаюсь поместить элемент набора в вектор наборов строк. Нужно ли сначала создавать набор элемента, на который указывает итератор? Я предполагаю, что он указывает только на строку.
  5. Разве emplace_back не может напрямую создавать набор?
  6. Могу ли я сделать что-то вроде emplace_back(std::set(*it));

Вполне возможно, что все вышеперечисленное может быть концептуально неправильным, поскольку я новичок в c ++, но я пытаюсь понять, как лучше всего добавить элемент из набора в вектор наборов. Это кажется сложнее, чем ожидалось.

...