C ++在集合/映射中使用Vector作为键不会导致唯一的答案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++在集合/映射中使用Vector作为键不会导致唯一的答案相关的知识,希望对你有一定的参考价值。

我正在处理一个Leetcode问题,并且厌倦了以矢量为关键字。但是,它无法确保我的结果中没有重复项。我也尝试使用Map,但是甚至无法打印它的值,因为我相信我不知道如何打印包含int矢量的map的值作为键。请告诉我在我的代码中我做错了什么,为什么它不起作用。此外,如何使用地图打印整个矢量键。

我的代码如下:

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]);
         }
      }
};
答案

你的假设是错误的 - std::set< std::vector<int> >对矢量的内容进行了“完整”的比较。所以使用as键不应该给你怀疑的关键错误 - 如果你熟悉std::set< std::string >它就像std::string一样好。链接到文档:https://en.cppreference.com/w/cpp/container/vector/operator_cmp

以上是关于C ++在集合/映射中使用Vector作为键不会导致唯一的答案的主要内容,如果未能解决你的问题,请参考以下文章

如何使用包含键作为字符串和值作为映射迭代的ngFor循环映射进行迭代

在地图中使用pair作为键(C ++ / STL)

如何解决“不能使用 null 作为映射键!”使用 Group_Map 在 Python 3 中出现 Spark.SQL 错误

Javascript:使用元组作为字典键

使用对象作为键的多维地图

如何检测在 C 中使用诅咒按下的箭头键?