vector 动态添加

复制代码

#include <iostream> #include <vector> #include <string> #include <algorithm> int main() { std::vector<std::string> myVector; // 创建一个空的vector<string> std::string input; std::cout << "请输入字符串(输入exit退出):" << std::endl; while (true) { std::cin >> input; if (input == "exit") { break; // 如果输入为exit,则退出循环 } // 查找输入的字符串是否已经存在于vector中 auto it = std::find(myVector.begin(), myVector.end(), input); if (it == myVector.end()) { myVector.push_back(input); // 如果字符串不存在,则添加到vector中 } else { std::cout << "该字符串已存在!" << std::endl; } } std::cout << "你输入的字符串为:" << std::endl; for (const auto& str : myVector) { std::cout << str << std::endl; // 输出vector中的所有字符串 } return 0; }
复制代码

如果vector包含结构体,而结构体中有一个string类型的成员,要判断结构体中的成员string是否存在,如果不存在则动态添加,可以使用std::find_if()函数结合lambda表达式来查找元素是否存在,如果返回的迭代器指向vectorend()位置,则表示元素不存在,可以使用push_back()函数来添加元素。

复制代码
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

struct MyStruct {
    std::string name;
    int age;
};

int main() {
    std::vector<MyStruct> myVector; // 创建一个空的vector<MyStruct>

    std::string input;
    std::cout << "请输入姓名(输入exit退出):" << std::endl;

    while (true) {
        std::cin >> input;
        if (input == "exit") {
            break; // 如果输入为exit,则退出循环
        }
        
        // 查找姓名是否已经存在于vector中的结构体中
        auto it = std::find_if(myVector.begin(), myVector.end(), [&](const MyStruct& s) {
            return s.name == input;
        });
        
        if (it == myVector.end()) {
            // 如果姓名不存在,则添加到vector中的结构体中
            MyStruct newStruct;
            newStruct.name = input;
            myVector.push_back(newStruct);
        } else { 
        // 如果姓名存在,则修改对应的年龄
std::cin >> it->age;
} } std::cout << "你输入的姓名为:" << std::endl; for (const auto& s : myVector) { std::cout << s.name << std::endl; // 输出vector中的所有姓名 } return 0; }
复制代码

 

posted @   SusieSnail_SUN  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示