7-3 将数组中的数逆序存放 (20 分)
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
思路分析:
本体潜在要求的最佳方法即为用容器解答。使用vector容器配合for循环进行倒序输出为最优解。
#include<iostream>
#include<vector>
#include<cstdio>
using namespace std ;
int main ()
{
int n , b ;
vector<int>a1; //vector数组
cin >> n ;
for ( int i = 0 ; i < n ; i ++ )
{
scanf ("%d",&b); //scanf配合push输入
a1.push_back(b) ;
}
for ( int j = n ; j > 0 ; j -- ) //倒序输出
{
if ( j != 1 )
printf ( "%d " , a1[j-1] ) ;
else if ( j == 1 )
printf ( "%d" , a1[0] ) ; //最后一个数字没有空格
}
return 0 ;
}
总结:
建立vector容器的五种操作:
vectorv1; vector保存类型为T的对象。默认构造函数v1为空。
vectorv2(v1); v2是v1的一个副本。
vectorv3(n,i); v3包含n个值为i的元素。
vectorv4(a,a+4); 利用a[MAX]数组赋值
vectorv5(v4.begin(),v4.end()) ; //利用另一个容器和函数赋值
常用函数:
1.push_back() 在数组的最后添加一个数据
2.pop_back() 去掉数组的最后一个数据
4.begin() 得到数组头的指针
5.end() 得到数组的最后一个单元+1的指针
6.front() 得到数组头的引用
7.back() 得到数组的最后一个单元的引用
10.size() 当前使用数据的大小
13.erase() 删除指针指向的数据项
14.clear() 清空当前的vector
17.empty() 判断vector是否为空
18.swap() 与另一个vector交换数据
19.insert() 插入