我是C STL的新手。在下面的示例中
bool checkDuplicatesWithinK(int arr[], int n, int k)
{
set<int> myset;
for (int i = 0; i < n; i++)
{
if (myset.find(arr[i]) != myset.end())
return true;
myset.insert(arr[i]);
if (i >= k)
myset.erase(arr[i-k]);
}
return false;
}
在这里我无法理解下面的线
if (myset.find(arr[i]) != myset.end())
return true;
myset.find(arr[i])
正在检查集合中是否存在该元素。但是,为什么他们将条件不等于myset.end()
?我阅读了myset.end()
的描述,这将返回元素的迭代值之后最后一个元素。
三个错误。 - 当调用返回表达式时,函数结束,不会执行return
。
错误的参数传递到擦除
做冗余工作
至于第三个,您可以直接使用insert
的返回值,即std::pair
,您可以检查第二个Menber以确保是否完成插入。
我认为,您不需要检查插入是否成功了。
您想要的全部在http://en.cppreference.com/w/cpp/container/set