#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;
}
このプログラムでは、各単語の入力数をカウントしたいと考えています。 文字列反復子からint反復子への変換関数を書きました。しかし、それはまだ動作しませんし、イテレータは互換性がないと言います。何か間違っていますか?さらに、なぜ反復子が対応する整数に変換できないのか混乱しています。そしてなぜ 'ptrdiff_t'があるのですが、それがちょうど 'int'ならもっと簡単になりませんか? 私はこのウェブサイトを初めて使用します。誰かが私の質問に答えることができれば、私は感謝しています。ありがとう。イテレータは互換性がないのはなぜですか?
- 2つの文字列を入力した後の実行時エラーです。デバッグアサーションに失敗しました。ファイル:ベクトル、行248.式:ベクトル反復子は互換性がありません。私はVS2015で走った。
- ラインAでエラーが発生します。
最終的にわかります。みんな、ありがとう。本当にありがとう、よかったです。
「動作しません」というエラーが表示されますか?投稿する。 –
イテレータは互換性がないと言われています。 –
どのようなエラーが表示されますか? – Galik