如何以正确的方式在向量中查找元素 - C++
how to find an element in vector in the right way - C++
我正在尝试从向量中删除一个元素。但是我想,我有一个具体的问题:
我的阅读文件数据:
移动 ctrl+a,F3
复制 ctrl+v,shift+v
搜索 F3,F4
- 正在尝试读取文件
- 输入一个我想听的单词(e.x.: move)
问题是,我只需要输入一个(如示例中的)单词,然后听取整个命令串(move ctrl+a,F3).
我需要的只是一个单词查找一个字符串。但是在下面的代码中我不能这样做,帮助,请解决问题。在下面的代码中,我只能找到一个单词,如果在一个文件中只有一个单词,而不是像 (move ctrl+a,F3),但是如果一个字符串包含好几个字。。找不到。
std::vector<std::string> HotMap::remove_element(std::vector<std::string> MyVector){
//remove a element ,reading a vector of cmds, then deletting one chosen of them
std::string delete_str;
std::vector<std::string>::iterator iter_vec;
std::cout << "Enter an element,which you want to delete: " << std::endl;
std::cin >> delete_str;
for (auto & c : delete_str) c = tolower(c); //For the standard for the right searching,all letters are in lower registr
//Here, iter_ve is my vector(vec_get_smd) it swiches to algorithm
//std::ind that look for a cmd command ,which user is trying to input
iter_vec = std::find(MyVector.begin(), MyVector.end(), delete_str);
if(iter_vec!= MyVector.end()) //Check if is there an element that yoy want earse
{
std::cout << "Found a element and earsed it!" << std::endl;
MyVector.erase(iter_vec);
}
else
{
std::cout << "The element wasn't found!" << std::endl;
}
for (iter_vec = MyVector.begin(); iter_vec != MyVector.end(); ++iter_vec) //Just for myself, showing results
{
std::cout << *iter_vec << std::endl;
}
return std::vector<std::string>(MyVector); }
我的成绩:
read KEYS from a file TWO,below
move,fsf,fsdf,aaa
copy
search
Enter an element,which you want to delete:
move
The element wasn't found!
我想,你需要尝试使用 std::search()
:
std::vector<std::string>
delete_word(“移动”);
auto iterator=std::search (MyVector.begin(),MyVector.end(),delete_word.begin(), delete_word.end());
它试图在 MyVector
中找到您的 delete_word。
我正在尝试从向量中删除一个元素。但是我想,我有一个具体的问题:
我的阅读文件数据:
移动 ctrl+a,F3
复制 ctrl+v,shift+v
搜索 F3,F4
- 正在尝试读取文件
- 输入一个我想听的单词(e.x.: move)
问题是,我只需要输入一个(如示例中的)单词,然后听取整个命令串(move ctrl+a,F3).
我需要的只是一个单词查找一个字符串。但是在下面的代码中我不能这样做,帮助,请解决问题。在下面的代码中,我只能找到一个单词,如果在一个文件中只有一个单词,而不是像 (move ctrl+a,F3),但是如果一个字符串包含好几个字。。找不到。
std::vector<std::string> HotMap::remove_element(std::vector<std::string> MyVector){ //remove a element ,reading a vector of cmds, then deletting one chosen of them std::string delete_str; std::vector<std::string>::iterator iter_vec; std::cout << "Enter an element,which you want to delete: " << std::endl; std::cin >> delete_str; for (auto & c : delete_str) c = tolower(c); //For the standard for the right searching,all letters are in lower registr //Here, iter_ve is my vector(vec_get_smd) it swiches to algorithm //std::ind that look for a cmd command ,which user is trying to input iter_vec = std::find(MyVector.begin(), MyVector.end(), delete_str); if(iter_vec!= MyVector.end()) //Check if is there an element that yoy want earse { std::cout << "Found a element and earsed it!" << std::endl; MyVector.erase(iter_vec); } else { std::cout << "The element wasn't found!" << std::endl; } for (iter_vec = MyVector.begin(); iter_vec != MyVector.end(); ++iter_vec) //Just for myself, showing results { std::cout << *iter_vec << std::endl; } return std::vector<std::string>(MyVector); }
我的成绩:
read KEYS from a file TWO,below
move,fsf,fsdf,aaa
copy
search
Enter an element,which you want to delete:
move
The element wasn't found!
我想,你需要尝试使用 std::search()
:
std::vector<std::string>
delete_word(“移动”);
auto iterator=std::search (MyVector.begin(),MyVector.end(),delete_word.begin(), delete_word.end());
它试图在 MyVector
中找到您的 delete_word。