C++程序检查给定项目是否包含在数组中
数组是一种线性顺序数据结构,用于在连续的内存位置存储同构数据。与其他数据结构一样,数组也必须具备以某种有效方式插入、删除、遍历和更新元素的功能。在 C++ 中,我们的数组是静态的。C++ 中也有一些动态数组结构可用。对于静态数组,可以存储 Z 个元素。到目前为止,我们已经存储了 n 个元素。在本文中,我们将学习如何使用 C++ 检查元素是否存在于数组中。
通过示例理解概念
Given array A = [10, 14, 65, 85, 96, 12, 35, 74, 69] Check whether 96 is present inside A or not. Yes, it is present, so return True.
在给定的示例中,我们有一个包含九个元素的数组 A。我们将检查元素 96 是否存在于 A 中。如果存在,则返回 true,否则对于不存在的元素返回 false。要检查元素是否在数组中,我们可以执行搜索。对于未排序的给定数组,我们需要执行线性搜索。让我们看看算法以更好地理解。
算法
获取一个数组 A 和一个元素 k,以检查 e 是否在 A 中
对于 A 中的每个元素 e,执行:
如果 e 与 k 相同,则
返回 true
结束 if
结束 for
返回 false
示例
#include <iostream>
# define Z 50
using namespace std;
void displayArr(int arr[], int n){
for( int i = 0; i < n; i++ ){
cout << arr[ i ] << ", ";
}
cout << endl;
}
string isInsideArray( int A[], int n, int k ){
for( int i = 0; i < n; i++) {
if( A [ i ] == k ) {
return "Yes";
}
}
return "No";
}
int main() {
int arr[ Z ] = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14};
int n = 12;
cout << "Array elements: ";
displayArr( arr, n );
cout << "Is 86 inside the array? :";
cout << isInsideArray( arr, n, 86 );
cout << "\nIs 900 inside the array? :";
cout << isInsideArray( arr, n, 900 );
cout << "\nIs 65 inside the array? :";
cout << isInsideArray( arr, n, 65 );
}
输出
Array elements: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Is 86 inside the array? :Yes Is 900 inside the array? :No Is 65 inside the array? :Yes
在 C++ STL 中使用向量
在上面的示例中,我们使用了静态数组,我们需要执行线性或顺序搜索来检查元素是否存在于数组中。在本节中,我们将使用来自 C++ STL 的向量。向量是动态数据结构,其中包含许多不同的函数。要搜索向量中的元素,我们可以使用 find() 方法。此方法包含在“algorithm”头文件中。让我们看看它的代码。
示例
#include <iostream>
#include <vector>
#include <algorithm>
# define Z 50
using namespace std;
void displayArr( vector<int> v ){
for( int i = 0; i < v.size() ; i++ ){
cout << v[ i ] << ", ";
}
cout << endl;
}
string isInsideArray( vector<int> A, int k ){
if( find( A.begin(), A.end(), k ) != A.end() ) {
return "Yes";
}
return "No";
}
int main() {
vector<int> A = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14};
cout << "Array elements: ";
displayArr( A );
cout << "Is 86 inside the array? :";
cout << isInsideArray( A, 86 );
cout << "\nIs 900 inside the array? :";
cout << isInsideArray( A, 900 );
cout << "\nIs 65 inside the array? :";
cout << isInsideArray( A, 65 );
}
输出
Array elements: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Is 86 inside the array? :Yes Is 900 inside the array? :No Is 65 inside the array? :Yes
除了 find() 之外,我们还可以使用另一种方法来检查元素是否存在于向量中,即向量对象的默认 count() 函数。当计数为 0 时,表示元素不存在,否则表示元素存在。实现如下所示
示例
#include <iostream>
#include <vector>
#include <algorithm>
# define Z 50
using namespace std;
void displayArr( vector<int> v ){
for( int i = 0; i < v.size() ; i++ ){
cout << v[ i ] << ", ";
}
cout << endl;
}
string isInsideArray( vector<int> A, int k ){
if( count( A.begin(), A.end(), k ) == 0 ) {
return "No";
}
return "Yes";
}
int main() {
vector<int> A = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14};
cout << "Array elements: ";
displayArr( A );
cout << "Is 86 inside the array? :";
cout << isInsideArray( A, 86 );
cout << "\nIs 900 inside the array? :";
cout << isInsideArray( A, 900 );
cout << "\nIs 65 inside the array? :";
cout << isInsideArray( A, 65 );
}
输出
Array elements: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Is 86 inside the array? :Yes Is 900 inside the array? :No Is 65 inside the array? :Yes
结论
在本文中,我们学习了如何检查元素是否存在于数组中。我们使用了静态数组和向量。对于静态数组,我们使用线性搜索方法搜索数组。由于我们认为数组中的元素未排序,因此使用线性搜索。否则,我们可以对排序数据使用二分搜索。在第二种和第三种方法中,我们使用向量,并使用 find() 和 count 方法来检查元素是否存在于向量中。可能还有一些其他方法可以使用 STL 使用集合或 set_intersection() 来实现相同的功能。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP