C ++ Использование вектора в качестве ключа в наборе / карте не приводит к уникальным ответам - PullRequest
0 голосов
/ 14 февраля 2019

Я работаю над вопросом Leetcode и устал делать набор с вектором в качестве ключа.Тем не менее, он не может убедиться, что в моих результатах нет дубликатов.Я также пытался использовать карту, но не смог даже напечатать ее значения, так как, как мне кажется, я понятия не имею, как мы можем напечатать значения карты, содержащие в качестве ключа вектор int.Пожалуйста, дайте мне знать, что я делаю неправильно в своем коде и почему он не работает.Кроме того, как печатать целые векторные ключи, используя карты.

Мой код выглядит следующим образом:

class Solution 
{
   public:
      vector<vector<int>> permuteUnique(vector<int>& nums) 
      {

         vector<vector<int>>result;
         permutations(nums,0,result);

         return result; 

      }

      void permutations(vector<int>&nums, int l, vector<vector<int>>&result)
      {
         set<vector<int>>s;
         if(l>=nums.size())
         {
            if(s.find(nums)==s.end())
            {
               s.insert(nums);
               result.push_back(nums);
               return;
            }

            else if(s.find(nums)!=s.end())
               return;
         }

         for(int i=l;i<nums.size();i++)
         {
            swap(nums[l],nums[i]);
            permutations(nums,l+1,result);
            swap(nums[l],nums[i]);
         }
      }
};

1 Ответ

0 голосов
/ 14 февраля 2019

Ваше предположение неверно - std::set< std::vector<int> > делает «полное» сравнение содержимого векторов.Поэтому использование в качестве ключа не должно давать вам ключевых ошибок, о которых вы подозреваете, - это так же хорошо, как std::set< std::string >, если вы знакомы с std::string.Ссылка на документацию: https://en.cppreference.com/w/cpp/container/vector/operator_cmp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...