C++ 使用 std::vector 取出并删除第一个元素

在 C++ 中,可以使用 std::vectorerase() 函数来取出第一个插入的元素并删除该元素。以下是一个实现示例:

#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() 的迭代器。
  • 为了避免代码过于复杂,示例代码中没有对内存泄漏进行处理,实际应用中需要进行内存管理。
  • 以上代码只提供了一个示例,你可以根据自己的实际需求进行调整和修改。
C++ 使用 std::vector 取出并删除第一个元素

原文地址: https://www.cveoy.top/t/topic/e1nn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录