我想知道使用之间是否有什么区别
std::set<int,std::greater<int>>::iterator itr;
Run Code Online (Sandbox Code Playgroud)
和
std::set<int>::iterator itr;
Run Code Online (Sandbox Code Playgroud)
我在下面的代码中尝试了其中的两个,结果是相同的,我想知道其中一个和另一个之间有什么区别,或者是否有任何实例需要使用其中一个而不是另一个(当使用STL库或其他情况)。
代码:
#include<iostream>
#include<iterator>
#include<set>
int main(){
std::set<int,std::greater<int>> s1;
s1.insert(40);
s1.insert(30);
s1.insert(60);
s1.insert(20);
s1.insert(50);
s1.insert(10);
// std::set<int>::iterator itr;
std::set<int,std::greater<int>>::iterator itr;
std::cout<<"\nThe set s1 is: \n";
for(itr=s1.begin();itr!=s1.end();itr++){
std::cout<<*itr<<" ";
}
std::cout<<"\n";
}
Run Code Online (Sandbox Code Playgroud)
std::set<int>::iterator itr;是错的。
默认情况下,它恰好可以在 GCC、Clang 和 MSVC 上运行。但是,例如,如果我启用 GCC 的迭代器调试 ( -D_GLIBCXX_DEBUG),它就会停止编译。
通常您不需要手动拼写迭代器类型。你可以做for (auto itr = s1.begin(); ...)。或者,如果需要在未初始化的情况下创建迭代器,decltype(s1)::iterator itr;.
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |