#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表达式来查找元素是否存在,如果返回的迭代器指向vector
的end()
位置,则表示元素不存在,可以使用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::cout << "该姓名已存在!" << std::endl; } } std::cout << "你输入的姓名为:" << std::endl; for (const auto& s : myVector) { std::cout << s.name << std::endl; // 输出vector中的所有姓名 } return 0; }
标签:std,myVector,end,include,vector,input,动态,添加 From: https://www.cnblogs.com/susiesnai-sun/p/17664161.html