从linux中的Windows迁移程序时,我遇到了使用c ++标准模板库的问题。我正在尝试键入一个模板,我在'<'之前收到错误'期望的初始化程序'此行上的令牌
typedef std :: list<的std ::对<整型,双> >成对列表;
为什么使用mvc ++而不使用g ++以及我如何修复它会有什么想法呢?
答案 0 :(得分:2)
我认为这是关于#includes。
以下非常简单的代码片段与Linux上的g ++完美匹配
#include <utility>
#include <list>
typedef std::list< std::pair< int,double> > PairList;
PairList x;
答案 1 :(得分:1)
关于标准包含文件要记住的一件事是允许它们但不需要相互调用。 (这并不像他们可能会通过这种方式污染命名空间,因为它们都使用命名空间std,你不应该把它搞乱。)
在MSVC ++中,有可能包含,反之亦然,但g ++标题中并非如此。因此,程序可能在MSVC ++中编译而不是在g ++中编译,源中缺少必需的标题。
确保所有必需的标题都包含在内,您应该没问题。
答案 2 :(得分:0)
您#include <utility>
对pair
了吗?
答案 3 :(得分:0)
我对G ++中的代码没有任何问题,并且通常发现它的STL支持非常棒。你有那里的所有#include
指令吗?有时这些因平台而异(即使它们不应该)。