我有一个std::vector of std::pair of std::string
,其中的语言和翻译是价值。这些是我的对向量中的值。
0. {English, Love},
1. {Spanish, Amor},
2. {Tagalog, Mahal},
3. {English, Love}
我想要做的是只删除索引3
,但是在我的代码中,如果我试图删除索引3
,那么索引0
和3
都会被删除。
这是我的密码:
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <utility>
auto main() -> int {
using pair_of = std::vector<std::pair<std::string, std::string>>;
using str_pair = std::pair<std::string, std::string>;
pair_of language_translation{};
language_translation.emplace_back(std::make_pair("English", "Love"));
language_translation.emplace_back(std::make_pair("Spanish", "Amor"));
language_translation.emplace_back(std::make_pair("Tagalog", "Mahal"));
language_translation.emplace_back(std::make_pair("English", "Love"));
std::string language{"English"};
std::string translation{"Love"};
auto selected_pair = std::remove_if(
language_translation.begin(), language_translation.end(),
[&](const str_pair &data_pair) {
if(data_pair.first == language && data_pair.second == translation) {
return true;
}
else {
return false;
}
}
);
language_translation.erase(selected_pair, language_translation.end());
for(const auto &pair : language_translation) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
}
输出结果是
Tagalog: Mahal
Spanish: Amor
我还能用什么算法来解决这样的问题呢?你们能举个例子吗?谢谢!
发布于 2022-10-21 08:50:54
要删除by索引,可以执行以下操作:
language_translation.erase(std::next(language_translation.begin(), index));
https://stackoverflow.com/questions/74151009
复制相似问题