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 <<" ";
^ ~~~~ !