结构体

结构体是一种自定义的数据类型,允许将多个不同类型的变量组合成一个单一的类型。

1. 定义结构体

struct 结构体名称 {
    数据类型1 成员变量1;
    数据类型2 成员变量2;
};

示例:

struct student {
    string name;
    int age;
};

定义结构体变量:

struct student p1 = {"小C", 10}; // struct 可省略
student p2 = {"小C", 10};

student *p = new student{"小C", 10};

2. 访问成员变量

使用点运算符 . 访问成员变量。

student p;
p.name = "Alice";
p.age = 20;

3. 结构体指针

使用箭头运算符 -> 访问指针指向的结构体对象成员。

student p1 = {"Alice", 25};
student *ptr = &p1;

ptr->age = 26;

cout << "Name: " << ptr->name << endl;
cout << "Age: " << ptr->age << endl;

4. 结构体的成员函数

struct student {
    string name;
    int age;

    // 成员函数
    void print() {
        cout << "Name: " << name << endl;
        cout << "Age: " << age << endl;
    }
};

student p;
p.print(); // 调用结构体的成员函数

5. 结构体嵌套结构体

struct Outer {
    int data1;

    struct Inner {
        int data2;
    } inner;
};

Outer outer;
outer.inner.data2 = 100;

6. cmp:sort 函数排序规则重写

sort 的 cmp 应满足严格弱序,建议使用 <,不要使用 <=。

bool cmp(int a, int b) {
    return a < b; // 升序
}

7. 结构体排序

// 定义结构体
struct st {
    string id;
    int age;
} a[105];

// 定义排序规则
bool cmp(st x, st y) {
    return x.id < y.id;
}

// 进行排序
sort(a, a + n, cmp);