伪代码:
int arr[ 5 ] = { 4, 1, 3, 2, 6 }, x;
x = find(3).arr ;
然后 x 将返回 2。
原文由 rectangletangle 发布,翻译遵循 CC BY-SA 4.0 许可协议
伪代码:
int arr[ 5 ] = { 4, 1, 3, 2, 6 }, x;
x = find(3).arr ;
然后 x 将返回 2。
原文由 rectangletangle 发布,翻译遵循 CC BY-SA 4.0 许可协议
有一个 find(…) 函数可以在数组中找到一个元素,该元素返回一个迭代器到该元素。如果未找到元素,则迭代器指向数组的末尾。
如果找到元素,我们可以简单地计算迭代器与数组开头的距离,以获得该元素的索引。
using namespace std;
int arr[ 5 ] = { 4, 1, 3, 2, 6 }
auto it = arr.find(begin(arr), end(arr), 3)
if(it != end(arr))
cerr << "Found at index: " << (it-begin(arr)) << endl;
else
cerr << "Not found\n";
原文由 Arghavan Mohammadhassani 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.3k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答512 阅读✓ 已解决
您为函数使用的语法没有意义(为什么返回值会有一个名为
arr
的成员?)。要查找索引,请使用
std::distance
<algorithm>
和std::find
—。或者你可以把它变成一个更通用的函数:
在这里,如果找不到该值,我将返回序列的长度(这与 STL 算法返回最后一个迭代器的方式一致)。根据您的喜好,您可能希望使用其他形式的故障报告。
在你的情况下,你会像这样使用它: