我正在制作一个包含文本的程序,并且:
但是,当我尝试将字符串与结构字符串成员进行比较时,我遇到了问题。
我的 vector 超出范围。请查看下面的代码。希望有人可以告诉我我在做什么错
#include <iostream>
#include<string>
#include <vector>
using namespace std;
struct word_entry {
string word;
int amount;
} ;
typedef vector<word_entry> type_of_vector;
void insert(type_of_vector word_storage,string word_to_insert)
{
bool word_found =false;
for(int i = 0;i<=word_storage.size();i++)
{
if(word_storage.at(i).word==word_to_insert) //crashes the program
{
word_storage.at(i).amount++;
word_found=true;
}
}
}
int main()
{
type_of_vector word_vector;
string word_to_insert="kalle";
word_entry insert_word={word_to_insert,1};
word_vector.insert(word_vector.end(),insert_word);
insert(word_vector,word_to_insert);
}
最佳答案
一些提示:
using namespace std;
不要在项目中包含整个
std
命名空间void insert(type_of_vector word_storage,string word_to_insert)
如果您不希望复制副本(看起来像您不愿意),请使用
type_of_vector& word_storage
,word_storage将始终是您在函数调用中放置的副本。如果不应该更改word_to_insert,那么使用const string& word_to_insert
也很有意义。for(int i = 0;i<=word_storage.size();i++)
您要越界访问,请使用
<
compare而不是<=