vector容器结构体类型查找

  • 对于内置类型,由于编译系统已经知道了,什么时候两个数据相等(如 10 == 10 为true),可直接使用std::find查找
std::vector<int> m_v;
std::vector<int>::iterator it = std::find(m_v.begin(), m_v.end(), 10);
  • 对于结构体,需要重载运算符"=="
struct student
{
    string name;
    int score;
    
    student()
    : name("")
    , score(0)
    {
    }
    
    bool operator==(const student& s)
    {
        return name== s.name;
    }
}

std::vector<student> m_v;
// some code

// 需要查找的对象
student s1;
s1.name = 'linduo'
std::vecot<student>::iterator = std::find(m_v.begin(), m_v.end(), s1);
if (it != m_v.end()) {
    // find it
}
else {
    // no find
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要通过姓名查找并删除vector容器中的一组数据,你可以使用以下步骤: 1. 创建一个结构体或类,其中包含需要存储的数据字段,例如姓名和其他相关信息。 2. 定义一个vector容器,其中元素类型为上述结构体或类。 3. 使用循环从用户输入获取一组数据,并将其添加到vector容器中。 4. 提示用户输入要删除的姓名。 5. 使用迭代器遍历vector容器查找并删除匹配的元素。 6. 输出删除后的vector容器。 下面是一个示例代码,演示如何通过姓名查找并删除vector容器中的一组数据: ```cpp #include <iostream> #include <vector> #include <string> struct Person { std::string name; // 其他相关信息 }; int main() { std::vector<Person> people; // 获取一组数据 std::cout << "输入数据(姓名):" << std::endl; std::string name; do { std::getline(std::cin, name); if (name != "") people.push_back({name}); } while (name != ""); // 查找并删除指定姓名的数据 std::cout << "输入要删除的姓名:" << std::endl; std::string targetName; std::getline(std::cin, targetName); auto it = people.begin(); while (it != people.end()) { if (it->name == targetName) it = people.erase(it); else ++it; } // 输出删除后的vector容器 std::cout << "删除后的数据:" << std::endl; for (const auto& person : people) { std::cout << person.name << std::endl; } return 0; } ``` 在上述示例中,我们首先定义了一个名为Person的结构体,其中包含一个name字段和其他相关信息。然后,我们定义了一个vector容器元素类型为Person。 接下来,我们使用循环从用户输入获取一组数据,并将其添加到vector容器中。用户可以通过输入空行来结束输入。 然后,我们提示用户输入要删除的姓名,并使用迭代器遍历vector容器查找并删除匹配的元素。使用erase函数删除元素后,我们需要更新迭代器,以确保不跳过后续元素。 最后,我们输出删除后的vector容器中的数据。 请注意,上述示例仅演示了通过姓名查找并删除数据的基本逻辑。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值