c++ - 在 Set/Map 中使用向量作为键的 C++ 不会产生唯一答案
问题描述
我正在研究一个 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 key 不应该给你怀疑的关键错误——它和std::set< std::string >
你熟悉的一样好std::string
。文档链接:https ://en.cppreference.com/w/cpp/container/vector/operator_cmp
推荐阅读
- node.js - 如何从 jwt 策略中获取有效载荷?
- twilio - 如何使用变量作为 Twilio 支付连接器(Stripe)中的费用描述
- javascript - document.activeElement 条件不起作用(id 或 ref 在 div 元素内)
- google-cloud-platform - 如何连接到 mqtt.googleapis.com
- excel - VBA 列表框显示带有货币格式的错误符号
- perl - perl-5.14.2 使测试失败
- java - 我可以让轮询器在 start() 命令之后使用 WAIT 开始他的周期吗?
- reactjs - 未处理的拒绝(TypeError):无法在已撤销的代理上执行“获取”
- python - 如何从列表变量中的每组向量中删除单引号?
- mysql - 无法通过套接字'/run/mysqld/mysqld.sock 连接到本地 MySQL 服务器