在vs2022中编辑了一小段代码。编译后运行,输入一个词后回车就提示vector subscript out of range。代码如下所示。请各位达人多多指教。应该做何修改。
word.h
#pragma once
#ifndef a_word
#define a_word
#include<vector>
#include<iostream>
#include<string>
using std::vector;
using std::istream;
using std::string;
using std::cin;
using std::cout;
using std::endl;
istream& word(istream&, vector<string>&, vector<int>&);
#endif
word.cpp
#include"word.h"
istream& word(istream& is, vector<string>& wd, vector<int>& sums) {
string s;
while (cin >> s) {
bool flag = false;
for (vector<string>::size_type i = 0; i <= wd.size(); ++i) {
if (s == wd[i]) {
flag = true;
sums.push_back(i);
break;
}
}
if (flag==false) {
wd.push_back(s);
sums.push_back(1);
}
}
return is;
}
main
#include"word.h"
int main() {
vector<string> wd1;
vector<int> sums1;
word(cin, wd1, sums1);
if (wd1.size() == 0) {
cout << "向量为空。";
}else
{
cout << "一共有" << wd1.size() << "个单词。" << endl;
}
for (vector<string>::size_type i = 0; i != wd1.size(); ++i) {
cout << wd1[i] << "出现" << sums1[i] << "次" << endl;
}
return 0;
}