C++ Unordered_set::cend() 函数



C++ std::unordered_set::cend() 函数用于返回一个 const_iterator,指向无序集合容器中最后一个元素的下一个位置。cend() 返回的 const_iterator 不指向任何元素,而是指向无序集合容器中最后一个元素之后的那个位置。

在 STL CPP 中,const_iterator 是一个迭代器,它指向元素上的 const 值(类似于指针),并提供对每个单个元素的访问。const_iterator 不允许修改无序集合容器中可用的指向元素。

unordered_set::cend() 函数类似于 unordered_set::end() 函数。cend() 函数只返回一个 const_iterator,而 end() 函数只返回一个 iterator。

语法

以下是 std::unordered_set::cend() 函数的语法。

const_iterator cend() const noexcept;
or
const_local_iterator cend ( size_type n ) const;

参数

  • n − 它表示桶号,必须小于 bucket_count。

返回值

此函数返回一个 const_iterator,指向无序集合容器中最后一个元素之后的那个位置。

示例 1

让我们看下面的例子,我们将使用循环来显示容器中一定范围内的元素。

#include <iostream>
#include <string>
#include <unordered_set>

int main () {
   std::unordered_set<std::string> myUset =
      {"100","200","300","400","500"};
      
   std::cout << "myUset contains:";
   for ( auto it = myUset.cbegin(); it != myUset.cend(); ++it )
      std::cout << " " << *it;
   std::cout << std::endl;
   
   return 0;
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

myUset contains: 500 400 300 200 100

示例 2

考虑下面的例子,我们将使用接受 i 作为参数的 cend() 函数来返回每个桶的元素。

#include <iostream>
#include <string>
#include <unordered_set>

int main () {
   std::unordered_set<std::string> myUset = {"100", "200", "300", "400", "500"};
      
   std::cout << "myUset's buckets contain:\n";
   for ( unsigned i = 0; i < myUset.bucket_count(); ++i) {
      std::cout << "bucket #" << i << " contains:";
      for ( auto local_it = myUset.cbegin(i); local_it!= myUset.cend(i); ++local_it )
         std::cout << " " << *local_it;
      std::cout << std::endl;
   }
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

myUset's buckets contain:
bucket #0 contains:
bucket #1 contains: 400
bucket #2 contains: 500
bucket #3 contains:
bucket #4 contains: 100
bucket #5 contains:
bucket #6 contains:
bucket #7 contains:
bucket #8 contains:
bucket #9 contains:
bucket #10 contains: 300
bucket #11 contains: 200
bucket #12 contains:

示例 3

在下面的例子中,我们将使用 cend() 函数通过使用 while 循环迭代无序集合来获取无序集合容器的元素。

#include <iostream>
#include <unordered_set>  
#include <string> 
using namespace std;
 
int main() {
   unordered_set<int> myset = { 10,20,30,40,50 };  
      cout<<"Elements of myUset are: "<<endl;  
   unordered_set<int>::const_iterator it; // declare an iterator 
   it = myset.begin();
   while (it != myset.cend()) {  
      cout << *it << "\n"; 
      ++it; // iterate to the next element  
   }  
   cout << endl;  
   return 0;
} 

输出

以下是上述代码的输出:

Elements of myUset are: 
50
40
30
20
10
广告