У меня есть карта, в которой в качестве ключа взят вектор целых. Я инициализирую карту ключом-вектором значений {1, 2, 3}
typedef std::map<std::vector<int>, std::string> VectorMap;
VectorMap vectorMap;
vectorMap[std::vector<int>{1, 2, 3}] = "test";
Затем я использую метод подсчета, чтобы показать, можно ли найти запись в VectorMap, используя вектор {1, 2, 3}
в качестве ключа.
std::cout << "count: " << vectorMap.count(std::vector<int>{1, 2, 3}) << std::endl;
Возвращает правильный счет.
count: 1
Однако я хочу сделать так, чтобы порядок значений в вектор не имеет значения. Поэтому я пытаюсь сделать то же, что и выше, но с перевернутым векторным содержимым, т.е. {3, 2, 1}
std::cout << "count: " << vectorMap.count(std::vector<int>{3, 2, 1}) << std::endl;
. Возвращает счетчик 0.
count: 0
Я хочу сделать так, чтобы сравнение векторов не имело значения для порядка содержимого, только если содержимое одинаково.
{1, 2, 3} count: 1
{3, 2, 1} count: 1
{1, 2} count: 0
{1, 2, 3, 4} count : 0
Как мне этого добиться? Должен ли я использовать другой контейнер вместо std :: vector?