for(auto&x:unordered_map变量) - 此语句抛出错误
for(auto& x : unordered_map variable) - this statement throwing error
嗨,我的代码片段如下
#include <iostream>
#include <string>
#include <unordered_map>
struct job
{
int priority;
int state;
std::string name;
};
job* selectJob(std::unordered_map<int, job*> jobList)
{
for (auto& x : jobList)
{
if(x->state == 1)
return x;
}
return NULL;
}
int main()
{
std::unordered_map<int, job*> jobList;
job a = { 1, 1, "a" };
jobList.insert(std::make_pair<int, job*>(1, &a));
job *selected = NULL;
while (NULL != (selected = selectJob(jobList)))
{
std::cout << "Name: " << selected->name << "Prio: " << selected->priority << std::endl;
selected->state = 2;
}
return 0;
}
在 Linux 上编译时,它会抛出一个错误:
g++ -std=gnu++0x q.cpp
q.cpp: In function âjob* selectJob(std::unordered_map<int, job*, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<const int, job*> > >&)â:
q.cpp:13: error: a function-definition is not allowed here before â:â token
q.cpp:18: error: expected primary-expression before âreturnâ
q.cpp:18: error: expected `;' before âreturnâ
q.cpp:18: error: expected primary-expression before âreturnâ
q.cpp:18: error: expected `)' before âreturnâ
有人遇到过这个问题吗?
您使用的编译器版本 (gcc 4.3) 不支持自动变量。
http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
自动类型变量 N1984 否
unordered_map
的value_type
是一对键和值,您需要选择第二个。
job* selectJob(std::unordered_map<int, job*> jobList)
{
for (auto& x : jobList)
{
if(x->second->state == 1)
return x->second;
}
return NULL;
}
此外,您可能希望通过引用传递以避免复制并导致悬空点。
job* selectJob(std::unordered_map<int, job*>& jobList)
相关文章:
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 语句错误:"","标记之前有"预期的')'
- Arduino 用于语句错误。令牌之前的预期')' ';'。如何解决这个问题?
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 为什么切换 if else 语句的顺序会导致错误?
- 错误:调用 .. at return 语句时没有匹配函数
- 为什么 if 语句在 Java 中"if(1)"给出错误,但在C++中成立?
- 试图避免在 for 循环中出现 if-else 语句,但代码似乎有一些错误
- 如果语句错误地读取字符串,则始终在第一个条件返回
- 表单显示对话框函数错误,并且不执行下面的语句
- C++ if 语句错误
- if 语句错误地识别括号中的空格
- 如果语句c 错误,请打破
- C++中的Switch语句错误
- c++ switch语句错误
- 对if语句错误使用#define
- 预期语句错误
- C++ If 语句错误:在"{"标记之前应为";"
- If语句错误