【发布时间】:2017-02-28 09:27:21
【问题描述】:
#include<iostream>
#include<set>
#include<unordered_map>
using namespace std;
typedef long Node;
typedef unordered_map<Node, set<Node> > Dothi;
Dothi g;
while (n--)
{
Node u, i;
int choose;
cin >> choose;
if (choose == 1)
{
cin >> u >> i;
cout << (Lienke(u, i) ? "TRUE" : "FALSE");
}
checkCase2 = false;
if (choose == 2)
{
cin >> u;
for ( auto n = g[u].begin(); n!=g[u].end();++n)
{
cout << n <<" "; //Error here, cant cout n
checkCase2 = true;
}
我无法在以下行中找到:“for(auto n = g[u].begin(); n!=g[u].end();++n )”。
它说:“没有运算符“
我可以使用c++2003
【问题讨论】:
-
n 是一个迭代器。尝试使用 *n: cout
-
谢谢,我试过了,但是系统说:“ISO C++ 禁止声明没有类型的‘n’”。
-
@MartinHoang C++03 没有
auto。 -
您还必须为您的地图键入定义迭代器,而不是使用 auto。如果您迁移到 C++11,您将同时拥有 auto 以及新的 for (auto& n : g[u]) 循环,这更容易编写,并且将 n 作为变量本身和不是迭代器。
-
它有 auto,但在 c++03 中它是一个存储类说明符,而不是作为无效关键字。
标签: c++ dictionary c++03