實現學生信息的增、刪、查、改、排序、遍歷,展示 STL 容器 vector、算法 sort/find_if、仿函數 operator() 的綜合應用。
CStudentStudentNumber、姓名 StudnetName、存儲對象的 vector<CStudent> student2(值語義,避免指針管理內存)。add_student():輸入學號姓名,push_back 入庫。print_student():迭代器遍歷輸出所有學生。SortStudent():sort(student2.begin(), student2.end()),依賴 operator< 按學號升序。FindStudent():find_if + 仿函數 operator()(比較學號或姓名)定位學生。DeleteOneStudent():find_if 定位後 erase 刪除。DeleteAllStudent():clear() 清空。// 用於 sort 排序比較
bool operator<(CStudent &stu) { return StudentNumber < stu.StudentNumber; }
// 用於 find_if 查找匹配(學號或姓名相同即視為同一學生)
bool operator()(CStudent &other) {
return (StudentNumber == other.StudentNumber) || (StudnetName == other.StudnetName);
}
int main() {
CStudent s; int flag;
while (1) {
// 菜單:1增 2查全部 3查找 4刪全部 5刪一個 6排序 0退出
cin >> flag;
switch(flag) {
case 1: s.add_student(); break;
case 2: s.print_student(); break;
case 3: s.FindStudent(); break;
case 4: s.DeleteAllStudent(); break;
case 5: s.DeleteOneStudent(); break;
case 6: s.SortStudent(); break;
case 0: return 0;
}
}
}

vector<CStudent> 避免了裸指針的內存洩漏風險。sort 用 operator<,find_if 用 operator(),職責清晰。begin()/end() 模式,通用性強。