四种不同的方法实现c++数组的遍历
方法一
使用普通的变量进行数组的遍历,这里我简单的通过一个代码来体现一下
#include<iostream>
#define N 10
using namespace std;
void sort(int a[], int n);
void print(int a[], int n);
void main() {
int a[N];
cout << "请输入10个数字" << endl;
for (int t = 0; t < N; t++)
{
cin >> a[t];
}
sort(a, N);
print(a, N);
}
void sort(int a[], int n) {
for (int n = 0; n < N-1; n++)
{
for (int j = n + 1; j < N; j++) {
if (a[n] < a[j]) {
int t = a[n];
a[n] = a[j];
a[j] = t;
}
}
}
}
void print(int a[], int n) {
for (int n = 0; n < N; n++) {
cout << a[n]<<" ";
}
cout << endl;
}
其中print函数和sort函数都用到了使用变量遍历函数
方法二
使用指针来遍历函数,这个方法c++基础库中的iterator库,找出我们数组堆栈原来的起始位置在哪里进行位置遍历
#include<iostream>
#include<iterator>
using namespace std;
int main() {
int a[] = { 1,2,3,4,5,6,7,8,9 };
for (int* p = begin(a); p != end(a); p++) {
cout << *p << ',';
}
return 0;
}
这个是利用c++库中的begin和end函数进行确定数组在储存中的位置进行在两个数组间遍历.
方法三利用数组的自生性质进行遍历
这个是利用数组名本身就是数组第一个变量进行遍历,然后在结合指针输出数组
#include<iostream>
using namespace std;
#define N 10
int main() {
int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
int* p = a;
for (int i = 0; i < N; i++) {
cout << *p << ",";
p++;
}
return 0;
}
方法四
使用c++11官方提供范围循环的方法进行c++数组的遍历,这个代码使用了智能指针和auto自动识别的类型进行编写,我们的案例叫做将数组内的所有数字进行平方和输出字符串的大写形式。
//智能字符认定和范围循环的应用
#include<iostream>
#include<string>
using namespace std;
void main() {
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
string s = "hello come to c++'s world";
int n = 0;
for (int i : a)
{
cout << i << " ";
}
cout << "\n";
for (int& i : a) {
i *= i;
}
for (int* p = begin(a); p != end(a); p++) {
cout << *p << " ";
}
cout << endl;
for (char& i : s) {
n++;
i = toupper(i);
}
cout << "这个一共有" << n << "字符" << endl;
for (auto c = begin(s); c != end(s); c++) {
cout << *c;
}
}
总结
以上就是四种代码的遍历数组的形式,利用指针和数组的性质进行遍历。