在 C++ 中对结构数组进行排序
sort struct array in c++
我有一个结构数组,并尝试按 lname 的字母顺序对它们进行排序,我尝试了气泡排序,但是当我们的数组中有一些空项目时,气泡排序将无法正常工作.那么有什么功能可以对这些项目进行排序吗?
这是我的代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct user {
char lname[30];
int userid;
};
user libuser[1000];
int main(){
strcpy(libuser[0].lname,"");
libuser[0].userid = 0;
strcpy(libuser[1].lname,"backzade");
libuser[1].userid = 1;
strcpy(libuser[2].lname,"akhondali");
libuser[2].userid = 2;
strcpy(libuser[3].lname,"sayidian");
libuser[3].userid = 3;
strcpy(libuser[4].lname,"navah");
libuser[4].userid = 4;
strcpy(libuser[5].lname,"mostarab");
libuser[5].userid = 5;
libuser[6].userid = 0;
strcpy(libuser[7].lname,"");
libuser[7].userid = 0;
strcpy(libuser[8].lname,"");
libuser[8].userid = 0;
strcpy(libuser[9].lname,"borobaba");
libuser[9].userid = 9;
strcpy(libuser[10].lname,"divune");
libuser[10].userid = 10;
for(int i=1;i<1000;i++)
if(libuser[i].userid!=0)
cout<<libuser[i].lname<<"n";
system("PAUSE");
return 0;
}
这段代码可以成为众多好方法中的一种方法。我只使用std::sort
和lambda。我希望这会对你有所帮助。新年快乐!
std::sort (std::begin(libuser), std::end(libuser), [&](const user& first, const user& second) -> bool
{
return (first.lname[0] < second.lname[0]);
});
#include <iostream>
#include <algorithm>
using namespace std;
struct user
{
char lname[30];
int userid;
};
user libuser[1000];
int elementCount = 0;
int main()
{
strcpy(libuser[0].lname,"");
libuser[0].userid = 0;
strcpy(libuser[1].lname,"backzade");
libuser[1].userid = 1;
strcpy(libuser[2].lname,"akhondali");
libuser[2].userid = 2;
strcpy(libuser[3].lname,"sayidian");
libuser[3].userid = 3;
strcpy(libuser[4].lname,"navah");
libuser[4].userid = 4;
strcpy(libuser[5].lname,"mostarab");
libuser[5].userid = 5;
libuser[6].userid = 0;
strcpy(libuser[7].lname,"");
libuser[7].userid = 0;
strcpy(libuser[8].lname,"");
libuser[8].userid = 0;
strcpy(libuser[9].lname,"borobaba");
libuser[9].userid = 9;
strcpy(libuser[10].lname,"divune");
libuser[10].userid = 10;
//sort
for(int i = 0; i < 1000; i++)
{
for(int j = 0; j < 1000 - 1; j++)
{
if(strcmp(libuser[j].lname, libuser[j + 1].lname) > 0) //change to < 0 for descending sort
{
user temp = libuser[j];
libuser[j] = libuser[j + 1];
libuser[j + 1] = temp;
}
}
}
for(int i = 1; i < 1000; i++)
{
if(libuser[i].userid!=0)
{
cout<<libuser[i].lname<<"n";
}
}
system("PAUSE");
return 0;
}
相关文章:
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 合并排序不排序自创建数组类 c++
- 带有枚举方向/类型的气泡排序结构数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- 排序并行数组
- 如何在数组 c++ 中对字符串进行排序
- 为什么在此排序算法实现中,向量明显比数组慢?
- 如何对不在数组中的变量进行排序?
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 按字母顺序对结构内数组变量中的名称进行排序
- 使用排序函数 c++ 对字符数组进行排序
- 使用 std::sort 对二维 c 数组进行排序
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 使用 std::sort 对 C 样式的 2D 数组进行部分排序
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 对 0 、1 和 2 的数组进行排序