矩阵顺时针旋转90度

//
//  main.cpp
//  矩阵数组旋转90度
//
//  Created by lee on 28/09/2018.
//  Copyright © 2018 lee. All rights reserved.
//

#include <iostream>
#include <vector>
using namespace std;

void  rotateEdge(vector<vector<int>>& arr, int s_x, int s_y, int e_x, int e_y){
    int times = e_y - s_y;
    int tmp = 0;
    for (int i = 0; i !=times; i++){
        tmp = arr[s_x][s_y+i];
        arr[s_x][s_y+i] = arr[e_x-i][s_y];
        arr[e_x-i][s_y] = arr[e_x][e_y-i];
        arr[e_x][e_y-i] = arr[s_x+i][e_y];
        arr[s_x+i][e_y] = tmp;
    }
}
void print_rotate_matrix(vector<vector<int>>& arr){
    int s_x = 0;
    int s_y = 0;
    int e_x = (int) arr.size()-1;
    int e_y = (int) arr[0].size()-1;
    while (s_x < e_x){
        rotateEdge(arr, s_x++, s_y++, e_x--,e_y--);
    }
}
int main(int argc, const char * argv[]) {
    vector<vector<int>> arr = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 },
        { 13, 14, 15, 16 } }; 
    print_rotate_matrix(arr);
    for (int i = 0; i < 4; i ++){
        for (int j = 0; j < 4; j++){
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}