C++ STL中的unordered_set end()
unordered_set::end() 是C++ STL中的一个内置函数,它返回一个指向过去末尾元素的迭代器。这个迭代器并没有直接指向一个元素,而是指向最后一个元素之后的位置。
语法
umap_name.end()
或者,
umap_name.end(int i)
参数 :这个函数接受单个整数参数 i ,它是可选的。
返回值 :
- 如果没有传递参数 i ,则函数返回一个迭代器,指向过去的末尾元素。实际上,它不指向集合的任何元素,而是指向容器中最后一个元素之后的位置。
- 如果传递了参数 i ,则该函数返回一个指向第 i 个 bucket 的末尾元素的迭代器。与前一种情况相似,它不指向集合的任何元素,而是指向第 i 个 bucket 的最后一个元素之后的位置。因此,unordered_set::end() 返回的迭代器不能被解引用。
下面的程序说明了 unordered_set::end() 函数:
示例 1:
// CPP program to illustrate the unordered_set::end()
// function
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> sampleSet =
{ 5, 10, 15, 4, 2, 7, 8, 6 };
// Continue the loop until it points to the
// past-the-end position returned by sampleSet.end()
for (auto it = sampleSet.begin(); it != sampleSet.end();
it++)
{
cout << *it << " ";
}
return 0;
}
输出:
6 8 7 2 4 15 10 5
时间复杂度: O(1)
辅助空间: O(1)
示例 2 :
// CPP program to illustrate the
// unordered_set::end() function
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> sampleSet =
{ 5, 10, 15, 4, 2, 7, 8, 6 };
// displaying all the buckets of the set.
// Continue the loop until it points to the
// past-the-end position returned by sampleset.end(i)
for (unsigned i = 0; i < sampleSet.bucket_count(); ++i)
{
cout << "Bucket " << i << " Contains: ";
for (auto it1 = sampleSet.begin(i);
it1 != sampleSet.end(i); ++it1)
cout << " " << *it1;
cout << endl;
}
return 0;
}
输出:
Bucket 0 Contains:
Bucket 1 Contains:
Bucket 2 Contains: 2
Bucket 3 Contains:
Bucket 4 Contains: 4 15
Bucket 5 Contains: 5
Bucket 6 Contains: 6
Bucket 7 Contains: 7
Bucket 8 Contains: 8
Bucket 9 Contains:
Bucket 10 Contains: 10
时间复杂度: O(1)
辅助空间: O(1)