VC6++中Map嵌套Set/Vector等容器


背景

因为公司的编译环境是VC++6.0, 古老的编译器,我用的不太习惯,于是就使用vs2013,在对map嵌套时,2013与VC6.0出现了异常

内容

代码是这样的:
    map<int, set<int>> stlNest;
对于上面这句话,vs2013通过,但是VC6.0报语法错误,错误提示如下:
E:\code\temp\main.cpp(11) : error C2146: syntax error : missing ',' before identifier 'stlNest'
E:\code\temp\main.cpp(11) : error C2065: 'stlNest' : undeclared identifier
E:\code\temp\main.cpp(11) : error C2143: syntax error : missing '>' before ';'
执行 cl.exe 时出错.

main.obj - 1 error(s), 0 warning(s)
因为大家的环境是VC6++,所以为了保证代码合并的时候不出问题,所以我就用了一个比较low的方法,使用结构体把容器包了一下,然后再放到map里面
struct stuSetInt{
    set<int> setInt;
};
map<int, stuSetInt> stlNest;
然后在代码合并的时候己被嘲笑了。。。T.T,然后经过指点,只动了一下,就编过去了
    map<int, set<int> > stlNest;    //你发现区别了么?
就是在`set<int>`后面加了一个空格。。。。泪奔

之前一直没找到为什么这样,今天再看QT学习之路的时候找到了答案
C++ 编译器会将连续的两个 > 当做输入重定向运算符,因此,这里的两个 > 中间必须有一个空格。

好了  问题解决
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值