名医指导 足不出户寻医问药
聚焦健康 权威的健康资讯
您的位置: 首页> 正文

...找到接受...类型的右操作数的运算符(或没有可接受的转换)_百度...

发布网友 发布时间:2024-10-24 11:25

我来回答

4个回答

热心网友 时间:1天前

error C2679二进制提示: 没有找到接受...类型的右操作数的运算符,是因为代码中使用了string类型,但没有包含<string>头文件。解决方法如下:

1、首先新建一个项目,给error2679项目添加一个cpp文件,如图所示。

2、输入一段会出现error C2679错误的代码,运行程序,可以看到程序发生了错误,如图所示。

3、造成此错误的原因是:代码中使用了string类型,但没有包含<string>头文件,所以出现了错误,如图所示。

4、这时给程序包含<string>头文件,如图所示。

5、然后运行程序,此时,程序可以正常运行,没有报错了,如图所示。

热心网友 时间:1天前

我用VS2008、VS2010、VS2013、GCC都试了一下,确实VS2008、VS2010编译出错,但是VS2013编译成功了(我也很纳闷为什么成功,从标准库给出的原型来看程序应该是不能编译通过的)!
你把typedef set<string,string>::const_iterator CIT;改成typedef set<string>::const_iterator CIT;就可以编译通过了!
你的问题是说完了,但我还有话说,如果你那本书上真是这样的代码,那你可以把那本书直接扔掉了,完全不值得看,误人子弟,害人害己,当然,我告诉你原因:
原罪一:
set模板类定义的原型是
template < class T, // set::key_type/value_type
class Compare = less<T>, // set::key_compare/value_compare
class Alloc = allocator<T> // set::allocator_type
> class set;
这里第一个参数就是你要存储的数据的类型,第二个参数和第三个是可选的,第二个默认是less<T>,排序准则,是一种函数对象(重载了括号运算符的)其定义如下:
template <class T> struct less : binary_function <T,T,bool> {
bool operator() (const T& x, const T& y) const {return x<y;}
};
也就是说less<string>表示使用string的小于号作为排序准则(可以换成greater<string>就是按大于号排序);第三个就不说了!
所以typedef set<string,string>::const_iterator CIT;这个东西严格意义来说是不正确的,你跟搞不清楚它要做什么,string作为排序准则,究竟是大于号?小于号?我刚查了下string没有重载operator (),所以不算函数对象;但是VS2013和G++能编译通过,我很纳闷!

原罪二:
来看看这个模板函数的定义,这明显不是面向对象的思想,是面向过程(C语言)的思维方式
template<class T>
void show(CIT&it,set<T>&s)
{
for(it=s.begin();it!=s.end();++it)
{
cout<<*it<<"\t";
}
cout<<endl;
}
C++的做法是什么呢
template <class T>
void show(const set<T>& s)
{
for (typename set<T>::const_iterator citer = s.begin(); citer != s.end(); ++citer)
{
cout << *citer << "\t";
}
cout << endl;
}
我来解释一下,这个函数的作用就是输出set容器内的每一个元素。明明只需要传入一个参数的,为什么会有两个?太奇怪了。

原罪三:(这部分可以商议)
再看这一段奇葩代码
const int N=5;
string s1[N]={"mick","bill","gate","rose","jane"};
string s2[N]={"张峰","秦平","李力","陆放","胡涛"};
set<string>name1;
name1.insert(s1,s1+N);
set<string>name2(s2,s2+N);
首先这里定义了两个临时数组,s1,s2,从这里看是为了使用数组特有的初始化列表(C++11标准后set也支持了),但从这个例子里看不出来这样使用的好处!
而且name1和name2的构造方式还不一样(第一个使用默认构造函数+insert成员函数,第二个则使用了特定的构造函数),很明显现在这个程序里不好解释
更合适的做法是:
set<string> name1;
name1.insert("mick");
name1.insert("bill");
name1.insert("gate");
name1.insert("rose");
name1.insert("jane");

set<string> name2;
name2.insert("张峰");
name2.insert("秦平");
name2.insert("李力");
name2.insert("陆放");
name2.insert("胡涛");
很一目了然,那么有些人可能会说如果元素很多呢,这样的代码会很难看,那么你其实应该将这些字符串放入文件,然后由程序读入,并使用insert插入到set中

原罪四:
cout<<"查找name2中大于“李力”的第一个元素。\n";
cit=name2.upper_bound("李力");
cout<<*cit<<endl;
set在英文下是按照字典顺序排序的,汉字的话,则不很确定,比如我在linux下使用G++运行的结果就是:
查找name2中大于<李力>的第一个元素。
秦平
注释:name2中顺序是:张峰 李力 秦平 胡涛 陆放(非拼音顺序)
而在windows下使用VS运行的结果则是:
查找name2中大于<李力>的第一个元素。
陆放(按照的是拼音顺序)
所以,这里就根本不该使用汉字来举例子,使用英文单词就会没有任何异议!

原罪五:
整个程序的布局、缩进、规范化都很差,一看都是业余的,或者很早以前的C++代码,我特别做了整理,看下:
#include<iostream>
#include<set>
#include<string>

using namespace std;

template <class T>
void show(const set<T>& s)
{
for (typename set<T>::const_iterator citer = s.begin(); citer != s.end(); ++citer)
{
cout << *citer << "\t";
}
cout << endl;
}

int main()
{
set<string> names;
names.insert("mick");
names.insert("bill");
names.insert("gate");
names.insert("rose");
names.insert("jane");

cout << "输出names中各个元素:" << endl;
show(names);

cout << "查找names中大于或等于<x-men>的第一个元素." << endl;
set<string>::const_iterator cit = names.lower_bound("x-men");
if (cit != names.end()) {
cout << *cit << endl;
} else {
cout << "很抱歉, 没有没有找到大于或等于<x-men>的元素" << endl;
}

return 0;
}
1、去掉了#include <iterator>
2、重写了show模板函数
3、去掉了name2,将name1改为names
4、使用多次insert代替数组加insert
5、尽量使用endl而非"\n"
6、使用const_iterator而非iterator,因为不修改其值
7、对cit的返回值做了判断,就想程序里写的,找不到的时候能够正确的处理;原来的程序在找不到的情况下,就会挂掉
8、合理的使用空格和换行,让程序美观而有调理

如果你看得进去,那我推荐你一本好的书《C++ Primer》看看吧

热心网友 时间:1天前

把typedef set<string,string>::const_iterator CIT;改成typedef set<string>::const_iterator CIT;就可以编译通过。

想定义一个DRAW变量,应该这样:

DRAW m_drawData;

m_drawData = new DRAW;是指针。

在定义体里面直接使用了自定义类的输入输出流重载运算符,但是还正在定义,这时候编译器还不知道你那个类怎么使用>> 和 <<。

扩展资料:

C语言中各运算符的结合性分为两种:左结合性和右结合性。

例如:算术运算符的结合性是自左至右,即先左后右。

如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。

而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。

参考资料来源:百度百科-运算符

热心网友 时间:1天前

把typedef set<string,string>::const_iterator CIT;改成typedef set<string>::const_iterator CIT;就可以编译通过。

想定义一个DRAW变量,应该这样:

DRAW m_drawData;

m_drawData = new DRAW;是指针。

扩展资料:

C语言中各运算符的结合性分为两种:左结合性和右结合性。

例如:算术运算符的结合性是自左至右,即先左后右。

如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。

参考资料来源:

百度百科-运算符

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
石料加工服务可以全部交给第三人完成吗 山东沃尔德集团集团所辖公司介绍 齐鲁银行无忧贷和市民贷哪个好 什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 红糖姜茶和黑糖姜茶哪个好 有住房贷款可以取公积金吗 ...﹠a和﹡P= ﹠a有什么区别,分别代表什么含义? 黑糖姜茶和红糖姜茶哪个更好? 姜茶哪个好,黑糖姜茶红糖姜茶来比较 奥林匹克运动会的格言 奥巴马年龄多大当总统 红糖姜茶和黑糖姜茶哪个好 红糖姜茶和黑糖姜茶的区别 邻国大选,中国一位老朋友脱颖而出,上台前先对中国承诺了一件事_百度... 哪种艾条好? 为什么每次和家人在一起都会吵架呢? 跟家里关系不好,老是吵架,沟通不来。怎么办 我好烦呐· 不知道为什么老和家人吵架 我该怎么办啊 和家人天天吵架,难道真的是自己有病吗? 狗狗为什么寿命不长 ...高宽比例为5:4,色值为#3492C4(即R52,G146,B196)) 你是权志龙的粉丝的话有人骂他你会生气吗?? 你愿意和比自己学历低的人恋爱吗? 李胜利对权志龙说过救你的话吗 ...斗数的大师们,可否帮我看下我的盘?我是1987年11月27日生辰,凌晨3:4... 灰太狼魔兽私服怎么没了 私立幼儿园老师能劝退孩子吗 魔兽私服有没会员的没? 不卖装备,不卖会员,仿官方,人最多的魔兽私服有没有? 无尽魔兽私服是不是被封了?如果没有为什么上不了了?谁能告诉我... 魔兽私服有谁能介绍个 官服一直不开 没东西可玩了 现在又没有比较好的免费魔兽私服 第六感强的人能避祸吗为什么 behind,who,Tom.is.怎样连词成句? 英语连词成句who,fastest,the,ran,in,race 农历一九九二年九月二十二日出生的是什么星座? 连词成句英语在线回答would,by,these,who,stories 骑自行车从三门峡到西安路线,时间!谢谢! 我想五月初从天津出发骑车去旅行,求各位大神规划张线路图 常见皮肤病彩色图谱目录 牛皮癣的临床分类、发病原因和危害 厨房水槽价格之墨林水槽简介及价格 奥特曼为什么不直接发大招 要等怪兽快挂了才发 情人之间借钱有借条可以起诉吗 凤梨花养了好多年,总也不开花是什么原因
  • 焦点

最新推荐

猜你喜欢

热门推荐