带有地图和矢量c ++的分段故障11
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有地图和矢量c ++的分段故障11相关的知识,希望对你有一定的参考价值。
我试图从给定的文本中获取频率表。但输出显示分段错误11.我不知道为什么。我是新手。我们非常感谢您对代码的帮助。您可以编辑我的代码,以便让我学习更好的编写代码的方法。非常感谢。
#include<iostream>
#include<map>
#include<string>
#include<vector>
void make_table(vector<pair<char, int> > &table , string path){
string text = "Hello thusnvkj.ernbuilvgqboipghq3pojavnaj.,fbvlkarebihfg094why091[3tugjvlksbdfv ajklvrpt-30qjhrgiaoehk.BL;H]IH;LGBJSFDNOWI;HBPWRHGB;ORTWIHGOQHRWI0TUGJRLKEWHUGIH49P0-IT302-UR9GM,NXM,BNX,MNMB/E/RGP'KGP34OR[2=O-O-=0-3-1I0-439890375892R0U;L.GNLS.N.SVMS/FS/FKWEP[IF0W))_*(&*(^^&$%#^%$&%*(^*&)(*)_*_(()())))]]'";
map<char, int> m;
for(int i=0; text[i]!=' '; i++){
m[text[i]]++;
}
map<char,int>::iterator it;
int j=0;
for(it=m.begin();it!=m.end(); it++){
table[j].first=it->first;
table[j].second=it->second;
j++;
//cout << it->first << " " << it->second << endl;
}
return;
}
int main(){
vector<pair<char , int> > table;
string path;
//cin >> path;
path= "Hi";
make_table(table, path);
// make_table function will give us the sorted table(vector of pair) in the decreasing order of frequency of a character.
/*for(int i =0; i<table.size(); i++){
cout << table[i].first << " " << table[i].second << endl;
}
*/
return 0;
}
答案
您收到错误,因为您尝试访问空向量中的元素
table[j].first=it->first;
table[j].second=it->second;
在这里,您可以在for循环外添加一行
table.resize(text.size());
以上是关于带有地图和矢量c ++的分段故障11的主要内容,如果未能解决你的问题,请参考以下文章