要在向量中查找对,我正在使用tabledata
。我需要帮助,以防止创作失败。
我正在研究一些代码,试图在向量中找到对。我需要unordered_set
作为逻辑。
这是我的代码:
unordered_set
错误消息:
int sockMerchant(int n, vector<int> ar) {
set<int> colors = new unordered_set<int>();
int pairs;
for ( int i = 0 ; i < n ; i++ ) {
if(!colors.contains(ar[i])) {
colors.insert(ar[i]);
} else {
pairs++;
colors.erase(ar[i]);
}
}
return pairs;
}
退出状态
Solution.cpp: In function 'int sockMerchant(int, std::vector<int>)':
Solution.cpp:10:23: error: conversion from 'std::unordered_set<int>*' to non-scalar type 'std::set<int>' requested
set<int> colors = new unordered_set<int>();
^~~~~~~~~~~~~~~~~~~~~~~~
Solution.cpp:15:20: error: 'class std::set<int>' has no member named 'contains'
if(!colors.contains(ar[i])) {
^~~~~~~~
除了要创建的1
之外,我还包含要使用的内容。
答案 0 :(得分:2)
这里有很多问题(而且编译器很好,可以提供很多有用的信息)
您正在尝试将std::unordered_set<int>*
分配到std::set<int>
变量中。类型不匹配,一种是指针(从new()
返回),另一种是局部堆栈变量。实际的类别与unordered_set != set
std::set
或std::unordered_set
都没有名为contains
的成员函数(至少在当前的C ++标准中没有,将在C ++ 20中可用)。您可以只使用find
中的std::unordered_set
成员函数来查看元素是否已在集合中。
您可以在这里查看类的定义: https://en.cppreference.com/w/cpp/container/unordered_set
在另一个说明中,如果不需要使用new
,请不要使用它。该函数不返回您创建的集合。
如果您坚持使用new
,则在使用完该集后应使用delete
,否则将出现内存泄漏。