C++ “无操作员”<<&引用;比赛 #包括 #包括 #包括 使用名称空间std; typedef长节点; typedef无序地图Dothi; 多蒂g; 而(n--) { 节点u,i; int选择; cin>>选择; 如果(选择==1) { cin>>u>>i; cout>u; 对于(自动n=g[u]。开始();n!=g[u]。结束();++n) { cout

C++ “无操作员”<<&引用;比赛 #包括 #包括 #包括 使用名称空间std; typedef长节点; typedef无序地图Dothi; 多蒂g; 而(n--) { 节点u,i; int选择; cin>>选择; 如果(选择==1) { cin>>u>>i; cout>u; 对于(自动n=g[u]。开始();n!=g[u]。结束();++n) { cout,c++,dictionary,c++03,C++,Dictionary,C++03,您正在尝试打印迭代器n。由于未执行此操作,因此会出现编译器错误。我认为您的情况如下: #include<iostream> #include<set> #include<unordered_map> using namespace std; typedef long Node; typedef unordered_map<Node, set<Node> > Dothi; Dothi g; while (n--) { N

您正在尝试打印迭代器
n
。由于未执行此操作,因此会出现编译器错误。我认为您的情况如下:

#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;
        }
更新:

由于您使用的是C++03,因此类型推断不允许使用
auto
关键字。然后应使用(在for循环中声明
n
时):


您正在尝试打印迭代器
n
。由于未实现此操作,因此会出现一个编译器错误。我认为您的问题如下:

#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;
        }
更新:

由于您使用的是C++03,因此类型推断不允许使用
auto
关键字。然后应使用(在for循环中声明
n
时):


如果您希望在给定迭代器下打印一个值,则必须对其使用解引用运算符:

Dothi::iterator n = g[u].begin();

cout如果您想要在给定迭代器下打印一个值,则必须对其使用解引用运算符:

Dothi::iterator n = g[u].begin();

<代码> CUTN是一个迭代器。尝试使用*N:CUT谢谢,我试过了,它工作了,但是系统说:“ISO C++禁止声明“n”,没有类型。.@MartinHoang C++03没有
auto
。您还必须为地图键入定义迭代器,而不是使用auto。如果移动到C++11,您将同时拥有auto和新的循环(auto&n:g[u])这是更容易编写的,它给了你变量本身,而不是一个迭代器。它是自动的,但是在C++ 03中它是一个存储类说明符,而不是作为无效关键字。n是一个迭代器。试试使用*n:cou-谢谢,我试过了,它工作了,但是系统说:“ISO C++禁止声明“n”,没有类型。.@MartinHoang C++03没有
auto
。您还必须为地图键入定义迭代器,而不是使用auto。如果移动到C++11,您将同时拥有auto和新的循环(auto&n:g[u]),它更容易编写,并且将n作为变量本身而不是迭代器。它有auto,但在c++03中它是存储类说明符,而不是作为无效关键字的cougt。
cout << *n <<" ";
        ^ ~~~~ !