icp备案添加网站,磁力屋torrentkitty,婚庆公司介绍,宿迁seo公司本期示例介绍:
本期示例《待办事项列表应用》展示了一个简单的任务管理系统#xff0c;用户可以通过命令行界面执行添加任务、删除任务和显示任务列表等操作。 功能描述#xff1a; 添加任务功能#xff1a; 用户可以输入任务描述#xff0c;将新的任务添加到任务列表中。…本期示例介绍:
本期示例《待办事项列表应用》展示了一个简单的任务管理系统用户可以通过命令行界面执行添加任务、删除任务和显示任务列表等操作。 功能描述 添加任务功能 用户可以输入任务描述将新的任务添加到任务列表中。 删除任务功能 用户可以输入任务索引号删除相应索引的任务。 显示任务列表功能 显示当前所有任务的索引、完成状态和描述信息。
示例涉及的基础知识点 结构体 示例中的 Task 结构体用于表示任务包含描述和完成状态。 向量容器 (std::vector) 用于存储任务列表。std::vectorTask 保存了 Task 结构体的实例实现了动态数组的功能能够动态添加和删除任务。 命令行交互 使用 std::cin 和 std::cout 进行命令行输入输出交互实现了用户和程序的交互。 函数和模块化设计 将不同功能的代码块封装成函数如添加任务、删除任务、显示任务列表等提高了代码的可读性和可维护性。 循环 (do-while 循环) 用于提供菜单选项允许用户多次执行操作直到选择退出。 条件语句 (if-else) 用于检查索引的有效性以及其他条件判断确保操作的有效性。 字符串处理 使用 std::string 处理任务描述使用 std::getline 获取用户输入的完整一行描述信息。
通过这个示例初学者能够学习如何使用向量容器管理数据如何进行基本的输入输出交互以及如何通过结构化设计实现简单的功能模块化。同时也能加深对函数、循环和条件语句等基本概念的理解。
示例在Clion中运行步骤
1. 新建项目 2. 粘贴代码
#include iostream
#include vectorstruct Task {std::string description;bool completed;
};// 添加任务函数
void addTask(std::vectorTask tasks, const std::string description) {Task newTask{description, false};tasks.push_back(newTask);std::cout Task added: description std::endl;
}// 删除任务函数
void removeTask(std::vectorTask tasks, int index) {if (index 0 index tasks.size()) {std::cout Task removed: tasks[index].description std::endl;tasks.erase(tasks.begin() index);} else {std::cout Invalid task index! std::endl;}
}// 显示任务函数
void displayTasks(const std::vectorTask tasks) {std::cout Tasks: std::endl;for (size_t i 0; i tasks.size(); i) {std::cout i 1 . ;if (tasks[i].completed) {std::cout [Completed] ;}std::cout tasks[i].description std::endl;}
}int main() {std::vectorTask tasks; // 创建任务列表向量char choice;do {std::cout \nTodo List Application\n;std::cout 1. Add Task\n;std::cout 2. Remove Task\n;std::cout 3. Display Tasks\n;std::cout 4. Quit\n;std::cout Enter your choice: ;std::cin choice;switch (choice) {case 1: {std::string description;std::cout Enter task description: ;std::cin.ignore(); // 忽略前一个输入的换行符std::getline(std::cin, description); // 读取整行输入作为任务描述addTask(tasks, description); // 调用添加任务函数break;}case 2: {int index;std::cout Enter task index to remove: ;std::cin index;removeTask(tasks, index - 1); // 调用删除任务函数break;}case 3:displayTasks(tasks); // 调用显示任务函数break;case 4:std::cout Exiting...\n;break;default:std::cout Invalid choice!\n;break;}} while (choice ! 4); // 循环直到用户选择退出return 0;
}
3. 编译运行
先编译一下看有没有错误 没有错误的话就开始运行 代码拆解知识点总结
让我们来拆分讲解一下这个待办事项列表应用我们可以逐步解释每个部分的作用和实现。 首先看一下头文件
#include iostream
#include vector这部分是包含了所需的标准库头文件
iostream用于输入输出操作。vector包含了向量容器的定义用于存储任务列表。 任务结构体
struct Task {std::string description;bool completed;
};这个结构体定义了一个任务包含了任务的描述和完成状态。 添加任务函数
void addTask(std::vectorTask tasks, const std::string description) {Task newTask{description, false};tasks.push_back(newTask);std::cout Task added: description std::endl;
}这个函数用于向任务列表中添加新任务将新任务的描述和完成状态初始化后添加到任务列表中并输出添加成功的消息。 Tips: tasks.push_back 是什么意思
当使用 std::vector 时push_back() 是用于向向量末尾添加新元素的成员函数。- **push_back()**- push_back() 是 std::vector 中用于在向量末尾添加新元素的函数。- 该函数接受一个参数即要添加的新元素。- 它将新元素添加到向量的末尾向量大小增加一个单位。- 对于基本数据类型或自定义类型都可以使用 push_back() 将其添加到 std::vector 中。在这个例子中push_back() 将新任务由参数 description 创建的 Task 结构体对象添加到了 tasks 向量的末尾实现了向任务列表中添加新任务的功能。删除任务函数
void removeTask(std::vectorTask tasks, int index) {if (index 0 index tasks.size()) {std::cout Task removed: tasks[index].description std::endl;tasks.erase(tasks.begin() index);} else {std::cout Invalid task index! std::endl;}
}这个函数用于从任务列表中删除指定索引的任务首先检查索引的有效性然后删除对应索引的任务并输出删除成功或失败的消息。 Tips: tasks.erase、tasks.begin 是什么意思
当使用 std::vector 时erase() 和 begin() 是两个常用的函数和迭代器。- **tasks.erase()**- erase() 是 std::vector 中用于删除元素的成员函数。它能够删除指定位置的元素或是一定范围内的元素。- tasks.erase(iterator)这个函数版本接受一个迭代器作为参数用于删除指定位置的元素。例如tasks.erase(tasks.begin() index) 将删除位于 index 索引位置的元素。- 如果要删除一定范围内的元素可以使用两个迭代器来指定范围比如 tasks.erase(tasks.begin() startIndex, tasks.begin() endIndex)它会删除从 startIndex 到 endIndex - 1 索引位置的元素。- **tasks.begin()**- begin() 是 std::vector 的成员函数返回指向容器第一个元素的迭代器。- tasks.begin() 返回一个迭代器指向 tasks 容器的第一个元素。- 迭代器是用于在容器中定位和遍历元素的对象。在 std::vector 中迭代器允许你访问和操作容器中的元素如删除、修改或遍历等。在上述示例中tasks.erase(tasks.begin() index) 这行代码中的 tasks.begin() index 返回了一个指向 tasks 容器中第 index 位置的迭代器。然后 erase() 函数使用这个迭代器来删除对应位置的元素实现了删除任务的功能。显示任务函数
void displayTasks(const std::vectorTask tasks) {std::cout Tasks: std::endl;for (size_t i 0; i tasks.size(); i) {std::cout i 1 . ;if (tasks[i].completed) {std::cout [Completed] ;}std::cout tasks[i].description std::endl;}
}这个函数用于显示当前的任务列表遍历所有任务并输出任务的索引、完成状态和描述信息。 主函数
int main() {std::vectorTask tasks; // 创建任务列表向量// ...菜单选项交互return 0;
}在主函数中我们创建了一个空的任务列表向量并提供了菜单选项的交互允许用户添加任务、删除任务或显示任务列表。根据用户的选择调用相应的函数执行对应的操作直到用户选择退出。
本次的拆分讲解帮助我们理解了每个函数的作用以及如何通过结构化的方式实现待办事项列表应用的基本功能。 本文就到这里了感谢您的阅读明天还有更多的实例学习文章等着你 。别忘了点赞、收藏~ Thanks♪(ω) 。