【发布时间】:2018-09-17 13:39:31
【问题描述】:
如果至少一个字符在 C++ 中的字符串向量中是常见的,我已经编写了程序来求和,因为我使用了 set_intersection 函数。我得到分段错误,不知道为什么。
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int matching_characters(string s1, string s2);
int main()
{
string s;
vector<string> ss;
int n,sum=0,avg=0;
cout<<"enter no in group"<<endl;
cin>>n;
for(int i=1;i<=n;i++)
{
cin >> s;
ss.push_back(s);
}
// cout<<ss[1];
// cout<<ts[1];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j)
continue;
int t=matching_characters(ss[i], ss[j]);
cout<<t;
if(t!=0)
sum=sum+1;
}
}
cout<<"'s='"<<sum<<endl;
//avg=sum/n;
//cout<<avg;
return 0;
}
int matching_characters(string s1, string s2) {
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
string intersection;
set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(),
back_inserter(intersection));
return intersection.size();
}
【问题讨论】:
-
请将您的代码作为文本发布在您的问题中。
-
for(int i=1;i<=n;i++)索引从0开始。试试for(int i = 0; i < n; i++) -
当使用
vector时,您可以使用at而不是[]。这将引发错误索引的异常。
标签: c++ string vector segmentation-fault set-intersection