关于C++ 的 sort 对二维数组排序。该如何解决

关于C++ 的 sort 对二维数组排序。
有一个二维数组。假设是 N * N;

需要对某个位置的X(横向排序)。或者某个位置的Y(纵向排序)。
例如:
4 6 5
1 3 2
8 7 9

对 2 行 横进行排序:
为 1 2 3;
结果为:
4 6 5
1 2 3
8 7 9

对 2 列 纵进行排序:
为 3 6 7;
结果为
4 3 5
1 6 2
6 7 9

这该怎么使用C++ 的STL 中的sort 函数?
C++ 二维数组 STL sort

------解决方案--------------------
横的直接排就行了,纵的话需要写一个特殊的迭代器,然后再排就可以了。
------解决方案--------------------
#include <iostream>
#include <Windows.h>
using namespace std;
void SortY(int a[3][3],int j);
void SortX(int a[3][3],int i);
int main()
{
int A[3][3];
int x,y;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cin>>A[i][j];
}
}
cout<<"你输入的是:"<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if((j+1)%3 == 0)
{
cout<<A[i][j];
cout<<endl;
}
else
{
   cout<<A[i][j];
   cout<<" ";
}
}
}
cout<<"你要排序的是:"<<endl;
cin>>x>>y;
SortX(A,x);
SortY(A,y);
Sleep(1000);
return 0;
}
void SortX(int a[3][3],int i)
{
int temp;
for(int m=0;m<3;m++)
{
for(int k=m+1;k<3;k++) 
{
if(a[i-1][m]>a[i-1][k])
{
temp=a[i-1][k];
a[i-1][k]=a[i-1][m];
a[i-1][m]=temp;
}
}
}
cout<<i<<"行排序结果: ";
for(int k=0;k<3;k++)
{
cout<<a[i-1][k]<<"-";
}
cout<<endl;
}
void SortY(int a[3][3],int j)
{
int temp;
for(int m=0;m<3;m++)
{
for(int k=m+1;k<3;k++) 
{
if(a[m][j-1]>a[k][j-1])