C++ 使用 std::vector 取出并删除第一个元素
C++ 使用 std::vector 取出并删除第一个元素
在 C++ 中,可以使用 std::vector 的 erase() 函数来取出第一个插入的元素并删除该元素。以下是一个实现示例:
#include <iostream>
#include <vector>
#include <cstring>
typedef struct
{
char taskName[256];
int job_id;
} job_st;
ttypedef job_st *pjob_t;
std::vector<job_st> g_job_compress_vector;
job_st takeFirstElement()
{
if (g_job_compress_vector.empty()) {
// 如果向量为空,返回一个空的job_st结构体
job_st emptyJob;
memset(&emptyJob, 0, sizeof(job_st));
return emptyJob;
}
job_st firstElement = g_job_compress_vector.front(); // 获取第一个元素
g_job_compress_vector.erase(g_job_compress_vector.begin()); // 删除第一个元素
return firstElement;
}
int main()
{
// 向g_job_compress_vector插入一些元素
job_st job1;
strncpy(job1.taskName, 'Task 1', sizeof(job1.taskName));
job1.job_id = 1;
g_job_compress_vector.push_back(job1);
job_st job2;
strncpy(job2.taskName, 'Task 2', sizeof(job2.taskName));
job2.job_id = 2;
g_job_compress_vector.push_back(job2);
// 取出第一个元素并删除
job_st firstElement = takeFirstElement();
std::cout << 'First Element: ' << firstElement.taskName << ' ' << firstElement.job_id << std::endl;
// 遍历剩余元素
std::cout << 'Remaining Elements: ' << std::endl;
for (const auto& job : g_job_compress_vector) {
std::cout << job.taskName << ' ' << job.job_id << std::endl;
}
return 0;
}
在这个示例中,我们定义了一个 takeFirstElement() 函数来取出第一个元素并删除它。如果向量为空,函数将返回一个空的 job_st 结构体。在主函数中,我们插入了两个元素到 g_job_compress_vector,然后调用 takeFirstElement() 函数来取出第一个元素并打印它。最后,我们遍历剩余的元素并打印它们。
代码说明:
g_job_compress_vector.front():获取向量中的第一个元素。g_job_compress_vector.erase(g_job_compress_vector.begin()):删除向量中的第一个元素。memset(&emptyJob, 0, sizeof(job_st)):初始化一个空的job_st结构体。
注意:
erase()函数会返回删除元素后的下一个元素的迭代器,如果删除的是最后一个元素,则返回指向end()的迭代器。- 为了避免代码过于复杂,示例代码中没有对内存泄漏进行处理,实际应用中需要进行内存管理。
- 以上代码只提供了一个示例,你可以根据自己的实际需求进行调整和修改。
原文地址: https://www.cveoy.top/t/topic/e1nn 著作权归作者所有。请勿转载和采集!