c++ - 带有 vector 值声明的 Netbeans IDE 8.0.2 C++ 代码帮助问题映射

标签 c++ c++11 netbeans

我正在尝试设置类型为 std::map<std::string, std::vector<int>> arrayInfo84 的变量在 NetBeans 中,但这导致代码协助发出一个合适的说法

Unable to resolve Identifier arrayInfo84

Unexpected token: map

Unexpected token: ;

我的其他具有更多基本数据类型(即 string int 等)的 map 变量工作正常。这似乎是 vector 的问题。在有人问之前,是的,我确实有 #include<vector>在我的标题中。

我猜这是支持 C++11 的一些问题。但是,我不知道如何解决这个问题。我的工具集是最新版本的CygWin。

最佳答案

问题可能出在定义上:

std::map<std::string, std::vector<int>> arrayInfo84;
//                              here ^^ is the problem

最后一个标记是 >>,它在 C++11 之前的版本 (C++98/C++03) 中被解析为位移运算符。这是因为 C++ 使用所谓的 "principle of maximal munch"。 .由于这个事实,嵌套模板必须始终使用 >> 作为它们的分隔符,所以上面的声明应该是

std::map<std::string, std::vector<int> > arrayInfo84;
//    note the additional space here ^^^

但是,C++11 放宽了规则,现在允许使用 >>> 作为嵌套模板的分隔符,因此您的定义在 C++11 中有效,但不是在 C++98/C++03 中有效。

您的 Netbeans 代码分析器可能不遵循最新的 C++11 规则,这就是您可能收到警告的原因。确保将编译器配置为支持 C++11,例如传递标志 -std=c++11,以及代码分析器(如果它没有自动跟随编译器)。

关于c++ - 带有 vector 值声明的 Netbeans IDE 8.0.2 C++ 代码帮助问题映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31061084/

相关文章:

java - Netbeans 是否内置 Maven?

c++ - 为什么 --list.end() 编译?

c++ - select() 没有获取标准输入

c++ - 尝试将元素从 Map 复制到兼容的优先级队列时出现无效堆错误

c++ - 将 g++ 代码翻译成 clion 环境

jakarta-ee - NetBeans 中 Java EE 项目的默认 index.jsp 文件在哪里?

c# - 读取文件而不会导致对其他进程的访问被拒绝

opencv - 了解 memcpy() 完成的复制

C++ 11 thread_local 和 "foreign"线程

java - 如何使 JScrollPane 与嵌套的 JPanel 一起正常工作?