#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <iomanip>
using namespace std;
vector<string>::iterator findString(vector<string> word, string x)
{
auto beg = word.begin();
for (; beg != word.end() && x != *beg; beg++);
return beg;
}
vector<int>::iterator convert(vector<string>::iterator &t, vector<string> &word, vector<int> &amount)
{
vector<int>::iterator count = amount.begin();
vector<string>::iterator beg = word.begin();
for (; beg != word.end() && beg != t; count++, beg++);
return count;
}
int main()
{
vector<string> word;
vector<int> amount;
string x;
cout << "Please enter words list:" << endl;
cin >> x;
word.push_back(x);
amount.push_back(1);
while (cin >> x)
{
vector<string>::iterator t = findString(word, x);
if (t != word.end()) //A: Error happens in this line.
{
vector<int>::iterator i = convert(t,word,amount);
(*i) ++;
}
else
{
word.push_back(x);
amount.push_back(1);
}
}
for (auto r : word)
cout << setw(4) << r;
cout << endl;
for (auto r : amount)
cout << setw(4) << r;
cout << endl;
return 0;
}
이 프로그램에서는 각 단어의 입력 수를 계산하고 싶습니다. 문자열 iterator에서 int iterator로 변환 함수를 작성했습니다. 그러나 여전히 작동하지 않으며 반복기가 호환되지 않는다고 말합니다. 뭔가 잘못 됐니? 게다가, 왜 반복자가 해당 정수로 변환 될 수 없는지 혼란 스럽습니다. 그리고 'ptrdiff_t'가있는 이유는 'int'일 경우 더 쉽지 않을까요? 처음으로이 웹 사이트를 사용합니다. 누군가 내 질문에 답변 할 수 있다면 감사 할 것입니다. 감사.반복기가 호환되지 않는 이유는 무엇입니까?
- 두 개의 문자열을 입력하면 런타임 오류가 발생합니다. 디버그 어설 션이 실패했습니다. 파일 : 벡터, 248 행. 표현식 : 벡터 반복자가 호환되지 않습니다. VS2015에서 실행했습니다.
- 라인 A에서 오류가 발생합니다.
마침내 이해합니다. 모두에게 감사드립니다. 정말 고마워, 좋은 하루 되길 빌어!
"작동하지 않습니다"오류가 있습니까? 그것을 게시하십시오. –
iterators는 호환되지 않는다고합니다. –
어떤 오류가 발생 했습니까? – Galik