C++ <int*, std::vector<int, std::allocator<int> > >' 要求??在一个简单的 20 行程序上
C++ <int*, std::vector<int, std::allocator<int> > >’ requested?? on a simple 20 line program
我一直在尝试编译并尝试使用 & 符号,但仍然无法弄清楚错误是什么。有任何想法吗?
以下是我遇到的唯一编译错误。
error: conversion from ‘void’ to non-scalar type ‘__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >’ requested
导致错误的行是
iterator it2 = nth_element (v_best.begin(), v_best.begin()+n, v_best.end());
非常感谢!
nth_element function returns void
。但是,您尝试将其转换为 iterator
.
要解决这个问题,只需删除 it2
。
您在 return
语句之后还有代码,该代码不可访问(并且使用未声明的标识符 it3
)。
The documentation 很清楚,不是吗? std::nth_element
returns void
,但您正试图从中初始化一个迭代器。我怀疑你不是真的想用std::nth_element
,这是一种部分排序算法。
如果您尝试实际打印 nth 元素,则此部分排序算法与该目标无关而您应该简单地访问 nth 元素!像这样:
std::cout << v_best[n] << '\n';
如果您 确实 打算使用此算法,那么不清楚您试图用此 it2
完成什么(稍后打字错误为 it3
).你想打印什么元素?无论如何,您是否意识到自己 return
首先是从函数中提取的?
你可以这样写:
nth_element(v_best.begin(), v_best.begin()+n, v_best.end());
然后以其他方式实现您的 "printing" 目标,无论目标是什么。
我一直在尝试编译并尝试使用 & 符号,但仍然无法弄清楚错误是什么。有任何想法吗?
以下是我遇到的唯一编译错误。
error: conversion from ‘void’ to non-scalar type ‘__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >’ requested
导致错误的行是
iterator it2 = nth_element (v_best.begin(), v_best.begin()+n, v_best.end());
非常感谢!
nth_element function returns void
。但是,您尝试将其转换为 iterator
.
要解决这个问题,只需删除 it2
。
您在 return
语句之后还有代码,该代码不可访问(并且使用未声明的标识符 it3
)。
The documentation 很清楚,不是吗? std::nth_element
returns void
,但您正试图从中初始化一个迭代器。我怀疑你不是真的想用std::nth_element
,这是一种部分排序算法。
如果您尝试实际打印 nth 元素,则此部分排序算法与该目标无关而您应该简单地访问 nth 元素!像这样:
std::cout << v_best[n] << '\n';
如果您 确实 打算使用此算法,那么不清楚您试图用此 it2
完成什么(稍后打字错误为 it3
).你想打印什么元素?无论如何,您是否意识到自己 return
首先是从函数中提取的?
你可以这样写:
nth_element(v_best.begin(), v_best.begin()+n, v_best.end());
然后以其他方式实现您的 "printing" 目标,无论目标是什么。