【发布时间】:2013-04-12 19:07:26
【问题描述】:
我刚刚熟悉 STL,我不太明白为什么 operator [] 会出错。
int main(){
set< int > s;
for(int i=0; i<=1000; i++) s.insert((i*1777)%123);
for(int i=0; i<s.size(); i++) cout<<s[i]<<endl;
}
然后我尝试了这个并收到另一个错误消息
int main(){
set< int > s;
for(int i=0; i<=1000; i++) s.insert((i*1777)%123);
for(int i=0; i<s.size(); i++) cout<<*(s.begin() + i)<<endl;
}
我明白为什么它没有像 push_back、pop_back 这样的成员,但我不明白为什么这两种引用方法不起作用(但它们适用于 vector 和string)。我知道库中没有重载这些运算符,但为什么呢?
经过一些网络搜索后,我确实想出了如何引用它
int main(){
set< int > s;
for(int i=0; i<=1000; i++) s.insert((i*1777)%123);
for(set< int >::iterator i=s.begin(); i!=s.end(); i++) cout<<*i<<endl;
}
【问题讨论】:
-
据我所知,STL
set没有operator[]。你确定第一个代码示例可以编译吗? -
@templatetypedef 它没有编译
标签: c++ visual-c++ stl reference set