【发布时间】:2017-12-16 14:42:37
【问题描述】:
我通常使用以下语法声明(和定义)我的向量向量,
vector<vector<int>> graph = *new vector<vector<int>>(n, *new vector<int>(n, 0));
这里 n 已经定义好了。这通常在大多数编译器中都能正常工作。但是几天前我尝试将源文件导入另一个系统,它充满了编译错误,例如,
"'>>' 之后的预期主表达式"
我不记得确切的错误,但知道在两边的“>”和“>”之间添加空格后,错误被删除了。即
vector<vector<int> > graph = *new vector<vector<int> >(n, *new vector<int>(n, 0));
我知道语法要求我们在两个 '> 之间添加空格,但我想知道编译器之间是否有任何区别,因为两者都使用 c++11 甚至相同的 IDE。我已经使用这种语法很长时间了,编辑每一个都会非常令人沮丧。更容易知道它适用于哪些编译器。
【问题讨论】:
-
“我通常使用以下语法声明(并定义)我的向量向量”哦,上帝,不。
-
你为什么用一个浪费内存的指针声明一个非指针
-
*new ...是内存泄漏。你怎么去delete那个指针? -
请不要这样定义你的向量。请以与每个教程完全相同的方式定义它们。
-
在
C++11中引入了避免在> >之间放置空格的功能。在此之前,您需要一个空间。