反转数组中整数的顺序

时间:2017-04-15 18:13:29

标签: c++ arrays integer

我在下面遇到这个问题。我正在尝试完成一个程序,该程序从用户读取多个输入以形成数组,然后以相反的顺序输出数组。

输入的第一行n应该是数组中的整数数。下一个输入应该是数组中每个索引的值。

我第一次使用C ++中的数组工作并发现这令人困惑,我搜索并发现有一种方法可以在一行中完成此操作,但我想在没有它的情况下完成此操作。我在当前循环中尝试了if语句和for循环,但每次我最终会使它复杂化并且无处可去。我确信我有一个简单的方法。

示例输入 -

4

1 2 3 4

输出应为 -

4 3 2 1

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>

using namespace std;


int main(){
    int n;
    cin >> n;
    vector<int> arr(n);
    for(int arr_i = 0;arr_i < n;arr_i++){
       int* arr = new int[n];
       cin >> arr[arr_i];      
    }

    return 0;
}

2 个答案:

答案 0 :(得分:0)

您可以使用std::reverse()中的<algorithm>功能,如本文档中所述:http://www.cplusplus.com/reference/algorithm/reverse/

std::reverse(arr.begin(), arr.end());

如果您不需要反转矢量,只需按相反顺序打印,也可以向后迭代它:

for (std::vector<int>::const_reverse_iterator it = arr.rbegin(); it != arr.rend(); ++it)
    std::cout << *it << " ";

警告:请注意您的行int* arr = new int[n];,它似乎是内存泄漏。这隐藏了数组arr的真实符号,然后您的本地变量arr就会丢失。你应该删除这一行。

答案 1 :(得分:0)

我认为这是您可以对当前代码进行的最小编辑,以使其正常工作。请注意,您不需要在for循环体中分配新的arr,因为您已经有一个具有该名称的向量。

int main(){
    int n;
    cin >> n;
    vector<int> arr(n);
    for(int arr_i = 0; arr_i < n; arr_i++){
       cin >> arr[n-arr_i-1];
    }
    return 0;
}