벡터의 모든 문자열을 인쇄하기로되어있는 프로그램을 작성했습니다. Iterator를 사용하고 있습니다. 내가 갖는 오류 :인용구를 사용하는 벡터 연산자와 일치하지 않음
cout << (*it) << " ";
벡터의 모든 문자열을 인쇄하기로되어있는 프로그램을 작성했습니다. Iterator를 사용하고 있습니다. 내가 갖는 오류 :인용구를 사용하는 벡터 연산자와 일치하지 않음
cout << (*it) << " ";
반복자를 공급함으로써,하지 dereferncing에서 사용하는 좀 더 간결하게 만들 수 있습니다 그것은 연산자 []에 있습니다. 귀하의 코드는 다음과 같아야합니다 :
void print_courses(){
vector<string>::iterator it;
for(it=courses_.begin();it < courses_.end(); it++)
cout << *it << " ";
}
operator []는 벡터를 숫자로 색인화하는 데 사용됩니다.
:
no match for 'operator[]' in '((Students*)this)->Students::courses_[it]'
이 내 코드입니다 완전히 틀렸다.
cout << this->courses_[it] << " ";
에 : 라인 변경
cout << *it << " ";
를 또는로 루프 전체를 변경 : 벡터의 요소에
for(vector<string>::size_type i=0; i<courses_.size(); ++i) {
cout << this->courses_[i] << " ";
}
는 다음과 같은 의미입니까? : 당신이 말하고 싶은
#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 << *it << " ";
반복자 포인트, 당신은하지 않습니다 그것을 벡터에 색인하기 위해 사용하십시오. 당신이 범위를 기반으로 for
루프를 지원하는 C++ (11) 컴파일러가있는 경우
for(it=courses_.begin();it < courses_.end(); it++) {
cout << *it << " ";
}
는 루프
for(auto const& c : courses) {
cout << c << " ";
}
"it"은 인덱스가 아니라 반복자입니다. 이 같은 지표를 통해
cout << *it <<" " ;
아니면 루프 - - 당신의 라인을 변경해야
for(int it=0; courses_.size(); ++it)
cout << this->courses_[it] << " ";
당신은 두 가지 방식을 혼합 할 수 없습니다