back_insert_iterator와iterator는 사용하기에 다르다.
4221 단어 iterator
#include<iostream>
#include<vector>
#include<algorithm>
#include<iterator>
using namespace std;
int main()
{
vector<int> coll;
//create back_inserter for coll
// - inconvenient way
back_insert_iterator<vector<int> > iter(coll);
//insert elements with the usual iterator interface
*iter =1;
iter++;
*iter =2;
iter++;
*iter = 3;
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout,", "));
cout<<endl;
//create back inserter and insert elements;
//- convenient way
back_inserter(coll) = 44;
back_inserter(coll) = 55;
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout,", "));
cout<<endl;
//use back inserter to append all elements again
//reserve enough memory to avoid reallocation
coll.reserve(2*coll.size());
copy(coll.begin(),coll.end(),//source
back_inserter(coll));//destination
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout,", "));
cout<<endl;
}
위 코드의 이 행은 다음과 같습니다.
back_insert_iterator<vector<int> > iter(coll);
어댑터를 정의했습니다.개인적으로도iterator에 속한다고 생각해서 사용법이 차이가 많지 않을 것 같아서 조롱박을 보고 다음과 같은 코드를 써서 하나의iterator를 정의했다.
iterator<vector<int> > iter1(coll);
결과 오류: error C2976: "std::iterator": 템플릿 파라미터가 너무 적습니다.
iterator 소스 코드를 봤는데 수준이 제한되어 있고 파라미터가 적다는 것만 알 뿐 구체적으로 어떻게 보완해야 할지 모르겠습니다.나중에 생각해 보니 보통iterater를 정의하는 데 다음과 같은 형식을 사용한다.
vector<int>::iterator iter1;
iter1 = coll.begin();
백과insert_iterator의 정의 방식은 완전히 다르다. 나는 백이라고 생각한다insert_iterator는 어떤 용기의 일부분이 아니라 용기 이외의 동쪽에 독립해야 한다.이것은 아마도 그것들의 정의 방식이 다른 원인일 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 집합 Iterator 교체의 실현 방법이것은 각종 용기 안의 모든 대상을 표준화하는 방법류이고 이것은 매우 전형적인 디자인 모델이다.Iterator 모드는 집합 클래스를 훑어보는 데 사용되는 표준 접근 방법입니다.그것은 접근 논리를 서로 다른 유형의 집...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.