C++ 如何迭代常数向量?
我有一个学生向量,它有一个字段名 我想迭代向量C++ 如何迭代常数向量?,c++,visual-c++,C++,Visual C++,我有一个学生向量,它有一个字段名 我想迭代向量 void print(const vector<Student>& students) { vector<Student>::iterator it; for(it = students.begin(); it < students.end(); it++) { cout << it->name << endl;
void print(const vector<Student>& students)
{
vector<Student>::iterator it;
for(it = students.begin(); it < students.end(); it++)
{
cout << it->name << endl;
}
}
void打印(常量向量和学生)
{
向量::迭代器;
for(it=students.begin();it cout name使用常量迭代器
。迭代器
允许修改向量
,因此无法从常量
容器中获取
此外,编写此循环的惯用方法使用it!=students.end()
而不是void print(const vector&students)
{
向量::常量迭代器it;//常量迭代器
for(it=students.begin();it!=students.end();it++)
{
cout name而不是vector::iterator
,使用vector::const\u iterator
无效打印(const-vector&students)
void print(const vector<Student>& students)
{
vector<Student>::const_iterator it; // const_iterator
for(it = students.begin(); it != students.end(); it++)
{
cout << it->name << endl;
}
}
void print(const vector<Student>& students)
{
for(auto it = students.begin(); it != students.end(); ++it)
{
cout << it->name << endl;
}
}
{
for(auto it=students.begin();it!=students.end();+it)
{
cout name您有两个(C++11中有三个)选项:const_迭代器
s和索引(+C++11中的“range for”)
C++11样式:
void print(const vector<Student>& students) {
for(auto const& student : students) {
cout << student.name << endl;
}
}
void打印(常量向量和学生){
用于(自动施工和学生:学生){
请阅读有关前缀和后缀增量运算符的信息。it++
应该是++it
,在极少数情况下(即在迭代时擦除时)需要it++
。很明显,这种情况下的问题是什么。但是,将来您应该在问题中包含编译器给您的确切错误消息。这个问题没有标记为C++0x1,但很高兴能记住我们的这一特性,可能会鼓励我们切换到C++11.+1…但是如果您决定更改为使用列表
或类似的东西,您的代码将无法工作。因此,请使用!=
表单。我是迭代器新手。您能告诉我哪些迭代器不喜欢!=以及为什么吗?@kunjaan:只有随机访问迭代器支持排序(未充分估计的答案:)为什么你认为它是不相关的?这就是你在C++11中迭代const vector的方式。我说的是被低估了,但拼写错了一个r。无论如何,不要告诉无关的。
template<typename Container>
void func(const Container& container) {
typename Container::const_iterator iter;
for (iter = container.begin(); iter != container.end(); ++iter)
// work with *iter
}
void print(const vector<Student>& students) {
for(auto const& student : students) {
cout << student.name << endl;
}
}