向量中的双V形被误读了? 在加速C++中,声明了这样的向量向量: vector<vector<int>> foo; vector<vector<int> > foo; 向量foo;

向量中的双V形被误读了? 在加速C++中,声明了这样的向量向量: vector<vector<int>> foo; vector<vector<int> > foo; 向量foo;,c++,C++,它可能会产生错误,因为>>可能会被误读为运算符,因此您实际上应该这样编写它: vector<vector<int>> foo; vector<vector<int> > foo; 向量foo; 然而,我的代码使用第一种方式编写的这些结构,似乎可以工作。C++是不是一个现代的惯例?< P > > P>当前版本的C++(C++ 11)使第一个版本合法化。一些编译器总是接受它(与C++03相比在技术上是错误的)。第二个版本更安全,兼容范围更广。您使

它可能会产生错误,因为>>可能会被误读为运算符,因此您实际上应该这样编写它:

vector<vector<int>> foo;
vector<vector<int> > foo;
向量foo;
然而,我的代码使用第一种方式编写的这些结构,似乎可以工作。C++是不是一个现代的惯例?< P > > P>当前版本的C++(C++ 11)使第一个版本合法化。一些编译器总是接受它(与C++03相比在技术上是错误的)。第二个版本更安全,兼容范围更广。

您使用的编译器是什么?对于MSVC来说,这是在Visual Studio 2008中修复的,因此这两种语法都可以正常工作。@AJG85:正如Charles Bailey非常正确地指出的,从技术上来说,说它在VS 2008中被破坏更合适。现在我们有了一个标准,它是固定的。AJG85:Visual C++ 2005也支持不间断的直角括号。我记不清楚,因此评论和不回答。一个更好的观点是得到一本最近印刷的书。当前的标准已经制作了一些非常模糊的角落案例模板实例,这些实例是合法的,非法的。例如
my22>>a现在需要是
my22)>>a。现在值得注意的是,在C++11中,如果要在模板参数中执行右移操作,必须将其括在括号中,因此
vector3>>vx变成
vector3)>>vx