原博客:点击打开链接
由于二维字符数组的第二维没有赋值运算符,即不能对整个一维数组进行赋值,因此是无法直接对二维数组用sort进行排序的,解决办法有二种:
代码一:
利用此方法将将数组放到结构体中,结构体中,这样赋值操作符就可用了,结构体中的数组可以进行整体赋值
- #include <iostream>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- struct Data
- {
- char data[100];
- }str[100];
- bool cmp(const Data &elem1, const Data &elem2)
- {
- if (strcmp(elem1.data, elem2.data) < 0)
- return true;
- return false;
- }
- int main()
- {
- int n, i;
- while (cin>>n)
- {
- for (i=0; i<n; ++i)
- {
- cin>>str[i].data;
- }
- sort(str, str+n, cmp);
- for (i=0; i<n; ++i)
- cout<<str[i].data<<endl;
- }
- return 0;
- }
代码二:
这样也可以实现对二维数组进行排序
- bool cmp(const char *elem1, const char *elem2)
- {
- if (strcmp(elem1, elem2) < 0)
- return true;
- return false;
- }
- int main()
- {
- char str[100][100];
- char *pStr[100] = {NULL};
- int n, i;
- while (cin>>n)
- {
- for (i=0; i<n; ++i)
- {
- cin>>str[i];
- pStr[i] = str[i];
- }
- sort(pStr, pStr+n, cmp);
- for (i=0; i<n; ++i)
- cout<<pStr[i]<<endl;
- }
- return 0;
- }