Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用cout的向量运算符不匹配_C++_Cout - Fatal编程技术网

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] << " ";