C++ 使用cout的向量运算符不匹配
我写了一个程序,应该只打印向量中的所有字符串。 我用的是迭代器。 我得到的错误是:C++ 使用cout的向量运算符不匹配,c++,cout,C++,Cout,我写了一个程序,应该只打印向量中的所有字符串。 我用的是迭代器。 我得到的错误是: no match for 'operator[]' in '((Students*)this)->Students::courses_[it]' 这是我的代码: #include <vector> #include <string> #include <iostream> using namespace std; #include "../include/Courses
no match for 'operator[]' in '((Students*)this)->Students::courses_[it]'
这是我的代码:
#include <vector>
#include <string>
#include <iostream>
using namespace std;
#include "../include/Courses.h"
class Courses;
class Students {
private:
string name_;
int id_;
public:
vector<string> courses_;
void print_courses(){
vector<string>::iterator it;
for(it=courses_.begin();it < courses_.end(); it++)
cout << this->courses_[it] << " ";
}
你想说:cout你的意思是:
cout << (*it) << " ";
这是完全错误的。更改行:
cout << this->courses_[it] << " ";
致:
或者,将整个for循环更改为:
for(vector<string>::size_type i=0; i<courses_.size(); ++i) {
cout << this->courses_[i] << " ";
}
迭代器指向向量的元素,而不使用它来索引向量
for(it=courses_.begin();it < courses_.end(); it++) {
cout << *it << " ";
}
迭代器是通过取消对它的限制来使用的,而不是通过将它提供给操作符[]。您的代码应该是:
void print_courses(){
vector<string>::iterator it;
for(it=courses_.begin();it < courses_.end(); it++)
cout << *it << " ";
}
运算符[]用于按数字对向量进行索引。它是迭代器,而不是索引。 你需要把线路改成-
cout << *it <<" " ;
或者像这样循环索引-
for(int it=0; courses_.size(); ++it)
cout << this->courses_[it] << " ";
你不能把这两种方法混在一起
cout << *it <<" " ;
for(int it=0; courses_.size(); ++it)
cout << this->courses_[it] << " ";