【发布时间】:2018-04-04 13:49:25
【问题描述】:
我是 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() 的描述,这将返回最后一个元素之后的元素的迭代器值。
【问题讨论】:
-
查看
find返回的内容 -
如果集合中不存在该元素,
std::set::find会返回什么? -
如果未找到该项目,
std::set::find函数将返回std::set::end迭代器。只是为了避免疑虑。