网站首页 > 基础教程 正文
NOI入门组大纲
什么是结构体?
在实际问题中,一组数据往往具有不同的数据类型。例如,人口大普查时,我们需要记录每一位公民的姓名,年龄,性别,住址,身份证号码等信息。这些信息分别要用整型,字符型,字符串型来记录。
为了更方便地解决这类问题,C++语言给出了另一种构造数据类型——结构体。
结构体基本用法
创建一个学生结构体(注意:结构体名一般首字母大写,与普通数据类型名区分开):
struct Student{
string name;
int age;
int score;
char gender;
bool is_leader;
};
创建结构体变量初始化赋值:
1.统一赋值:使用 { }
Student xiaoming = {"小明", 10, 300, 'm', true};
2.分别赋值:变量名.属性名
Student xiaoming;
xiaoming.name = "小明";
xiaoming.age = 10;
xiaoming.score = 300;
xiaoming.gender = 'm';
xiaoming.is_leader = true;
结构体数组
struct Student{
string name;
int age;
int score;
}students[N];
int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++)
cin >> students[i].name >> students[i].age >> students[i].score;
for(int i = 1; i <= n; i++)
cout << students[i].name << " ";
return 0;
}
结构体排序
自定义比较函数
// 按照分数从大到小排序,如果分数相同,按照年龄从小大到排序
bool cmp(Student& a, Student& b){
if(a.score == b.score)
return a.age < b.age;
return a.score > b.score;
}
sort(students + 1, students + n + 1, cmp);
运算符重载
// 按照分数从大到小排序,如果分数相同,按照年龄从小大到排序
struct Student{
string name;
int age;
int score;
bool operator < (const Student& x) const{
if(score == x.score)
return age < x.age;
return score > x.score;
}
}students[N];
sort(students + 1, students + n + 1);
结构体 数据对齐方法和节省空间原则
- 计算如下结构体类型所占的字节数(先根据自己的想法手动计算下再使用 sizeof() 运算符来计算验证下)。
struct A{
int a;
char b;
float f;
};
字节数 12。
struct B{
long long num;
char sex;
int age;
};
字节数 16。
结构体总大小为所有成员中最大对齐数的整数倍。
快乐刷题
- P364 谁考了第k名
- P265 紧急措施
- P565 年龄排序
- P633 [NOIP 2007 普及组] 奖学金
猜你喜欢
- 2024-12-30 C++ 在编程语言谱系中的位置及其特点
- 2024-12-30 C++基础知识总结(超详细总结) c++ 基础
- 2024-12-30 [面试]C++中struct和class的区别是什么
- 2024-12-30 C++类和C语言的结构体有什么区别?linux C++第18讲
- 2024-12-30 C与C++利用pragma pack对结构体做成员打包对齐设置
- 2024-12-30 结构体所占内存大小 结构体所占内存大小是所有成员所占的内存字节数计算
- 2024-12-30 结构体的各种使用方法详细讲解-c\c++
- 2024-12-30 C++,结构体和类,结构体和类的区别,struct与class的区别
- 2024-12-30 C++编程:复合数据类型—结构体 c语言结构体复数运算
- 2024-12-30 C#与C++交互开发系列之复杂类型传递与解析
- 01-07Python从入门到放弃-详解列表、元组和字典
- 01-07python 中字典如何进行复制
- 01-07python入门023:字典嵌套
- 01-07掌握Python字典的12个例子
- 01-07使用Python 获取多级字典(Json)格式所有Key、Value
- 01-07简单学Python——字典的操作1(增加、更改和删除字典元素)
- 01-07Python之容器拾遗:Python就是包裹在一堆语法糖中的字典
- 01-07深入了解python字典的有序特性
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)