永发信息网

高手来____为什么C++无法达到预期效果!

答案:1  悬赏:40  手机版
解决时间 2021-08-15 08:23
  • 提问者网友:浪荡绅士
  • 2021-08-14 14:21

#include <iostream>
#include <string>
#include <vector>
#include <iterator>
using namespace std;
int main ()
{
 string str;
 vector<string> svec;
 while (cin>>str)
  svec.push_back(str);
 cin.clear();
 int *pi=new int[svec.size()];
 memset(pi,0,svec.size());
 for(vector<string>::iterator iter0=svec.begin();iter0!=svec.end();++iter0)
  for(vector<string>::iterator iter=iter0;iter!=svec.end();++iter)
   if(*iter==*iter0)
    ++*(pi+iter-svec.begin());
 int max=*pi;
 size_t maxi=0;
 for (size_t i=1;i!=svec.size();++i)
  if (*(pi+i)>max)
  {
   max=*(pi+i);
   maxi=i;
  }
 cout<<"预处理对象为:"<<endl;
 for (vector<string>::iterator iter=svec.begin();iter!=svec.end();++iter)
  cout<<*iter<<' ';
 cout<<endl;
 if(1==max)
  cout<<"单词无重复"<<endl;
 else
  cout<<"单词"<<*(svec.begin()+i)<<"出现了"<<*(pi+i)<<"次"<<endl;
 delete [] pi;
 return 0;
}

第19行为什么出现error C2110: cannot add two pointers

最佳答案
  • 五星知识达人网友:妄饮晩冬酒
  • 2021-08-14 15:02

第19行就是++*(pi+iter-svec.begin());吧?


指针的差是size_t类型的相对位置


但是指针的和是未定义操作,因此改成++*(pi+(iter-svec.begin()));即可


希望我的回答对您有所帮助!

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯