使用STL设置功能查询



我是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

最新更新