当前位置:  开发笔记 > 编程语言 > 正文

如何在动态数组c ++中查找数字?

如何解决《如何在动态数组c++中查找数字?》经验,为你挑选了1个好方法。

说我有这样的数组:

int* arr; 

后来设置为:

arr = new int[capacity];

如何检查数字是否在这样的数组中?我知道我可以使用for循环遍历它但是有一个函数可以帮我吗?



1> anatolyg..:

你可以使用std::find:

arr = new int[capacity];
const auto end_arr = arr + capacity;
int* found = std::find(arr, end_arr, 42);
if (found == end_arr)
    std::cout << "Not found";
else
    std::cout << "Found at index " << (found - arr);

此库函数查找指定迭代器之间的数字"begin"和"end".在您的数组中,指向第一个元素的指针是"begin",而指向第一个元素(end_arr)的指针是"end".

如果找不到该数字,库函数将返回结束迭代器(不是nullptr,如您所料),因此您必须将其返回值与结束迭代器进行比较,以发现是否找到了该数字.


您还可以使用std::vector表示数组,而不是"指针+容量".这通常会导致更易于阅读的代码,这也更加强大(即更少的错误).std::vector在内部保持其能力,并且还有专门的方法beginend:

std::vector arr;
...
arr.resize(capacity);
...
auto found = std::find(arr.begin(), arr.end(), 42);
if (found == arr.end())
    std::cout << "Not found";
else
    std::cout << "Found at index " << (found - arr.begin());

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有