向量特定语法的向量
Vector of Vector specific syntax
i通常声明(并定义)我的向量的向量,
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。我使用了很长时间的语法,编辑每个语法将非常令人沮丧。知道它可以使用哪些编译器会更容易。
我给你一个分为两部分的答案:
vector<...> v = *new vector<...>(...)
基本上,您不应该这样做。
向量执行自己的内存管理,因此无需RAW new 。另外,在此行中,您可以在堆上分配内存(仅12或24个字节,具体取决于您的系统),然后将此向量分配给堆栈上的向量v
(这可能涉及一份内容的副本整个矢量)。堆上的向量永远不会被删除,因此内存泄漏。
更好:
vector<vector<int>> graph = vector<vector<int>>(n, vector<int>(n, 0));
或只是
vector<vector<int>> graph(n, vector<int>(n, 0));
现在对您最初问题的答案:C 标准开始允许>>
从C 11开始关闭嵌套模板(请参阅此相关问题),因此您需要配置编译器至少使用C 11标准(通常使用-STD = C 11标志)。但是,我知道的几乎所有最近的编译器默认情况下已经使用了此标准。
要获得更详细的答案,您需要告诉我们您使用的IDE和编译器。
相关文章:
- 很好的语法来获取对向量/数组数据的大小引用?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- priority_queue使用降序向量实现最小堆的语法差异
- 转换包含向量 C++ 的语法和结构
- 为什么具有两个元素的发起器语法将一个元素而不是两个元素放入字符串向量中?
- 如何创建一个function_list<>类来保存具有相同模板语法的 std::function<>s 向量?
- 如何使用 c++11 语法创建 for 循环以遍历向量
- 向量特定语法的向量
- C++中各种向量突变方法的语法
- 非标准语法;使用 '&' 创建指向成员的指针错误,将成员函数分配给向量时出错
- (C++)用于实例化新对象并将其分配给指向相同对象类型的指针的 2D 向量的语法
- 适当的语法用于在类内使用向量
- C++返回不可变指针向量的函数语法
- 在 VS12 中将初始值设定项列表作为向量的函数参数传递时出现语法错误
- 向量的 C# memcpy 等效项 (C# 列表) <T>(语法糖)
- c++二维向量语法错误
- 指针的向量,推入元素的语法
- 如何在c++ 11语法中初始化向量的向量
- 向量从R到c++的语法是什么?
- Boost Spirit语法用于识别从一行到向量的一系列数字