要统计编程课小班的人数,你可以使用一个结构体来记录每个学生的信息,并在结构体中添加一个计数器来统计人数。以下是一个示例代码:
```cpp
include
// 定义一个学生结构体
struct Student {
int id; // 学生ID
// 其他学生信息...
};
// 定义一个管理学生的类
class StudentManager {
private:
std::vector
public:
// 构造函数
StudentManager() {
// 初始化人数计数器
count = 0;
}
// 添加一个学生
void addStudent(int id) {
students.push_back({id});
++count;
}
// 删除一个学生
void removeStudent(int id) {
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->id == id) {
students.erase(it);
--count;
break;
}
}
}
// 获取当前学生人数
int getCount() const {
return count;
}
private:
int count; // 学生人数计数器
};
int main() {
StudentManager manager;
// 添加学生
manager.addStudent(1);
manager.addStudent(2);
manager.addStudent(3);
// 输出当前学生人数
std::cout << "当前学生人数: " << manager.getCount() << std::endl;
// 删除一个学生
manager.removeStudent(2);
// 输出当前学生人数
std::cout << "当前学生人数: " << manager.getCount() << std::endl;
return 0;
}
```
在这个示例中,我们定义了一个`Student`结构体来存储学生信息,并定义了一个`StudentManager`类来管理学生信息。`StudentManager`类中包含一个`std::vector`来存储学生信息,并提供了一个计数器`count`来统计当前学生人数。通过`addStudent`和`removeStudent`方法来添加和删除学生,并通过`getCount`方法来获取当前学生人数。
这种方法的时间复杂度较低,因为`std::vector`的`push_back`和`erase`操作在尾部进行,时间复杂度为O(1)。遍历整个向量来查找和删除学生的时间复杂度为O(n),但在实际应用中,这种操作的频率较低,因此整体性能是高效的。