c++ - 如何比较 C++ 中向量的元素?
问题描述
我目前有这个代码:
std::vector<std::string> words { "apple","banana","broccoli","lettuce" };
std::vector<std::string> disliked_words { "broccoli","carrot","tomato","lettuce" };
for (int i = 0; i < words.size(); i++)
if (words[i] == disliked_words[0] || words[i] == disliked_words[1] || words[i] == disliked_words[2] || words[i] == disliked_words[3] )
words[i] = "BLEEP";
for (int i = 0; i < words.size(); i++)
std::cout << words[i] << " ";
它比较第二个列表中的元素以查看第一个列表中是否有相似的元素,如果是这种情况,则将单词替换为“BEEP”。但是,if 语句效率非常低,我想知道是否有人知道我可以如何优化它。
抱歉,如果这是一个愚蠢的问题,这是我的第一个问题。
解决方案
使用嵌套循环(在另一个循环中循环)。
std::vector<std::string> words { "apple","banana","broccoli","lettuce" };
std::vector<std::string> disliked_words { "broccoli","carrot","tomato","lettuce" };
for (unsigned int i = 0; i < words.size(); i++){
for(unsigned int j=0;j<disliked_words.size();j++){
if (words[i] == disliked_words[j]){
words[i] = "BLEEP";
break;
}
}
std::cout << words[i] << " ";
}
时间复杂度:O(n^2)。也无需words
多次循环遍历向量。
推荐阅读
- php - pdf到php中的字节数组转换
- c++11 - ld:未找到体系结构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1
- angular - 通过代理配置从 Electron-Angular 项目调用 API
- python - 为什么 reshape 对 Transpose 的工作方式不同并返回一个新的 nd 数组?
- android - Android的FFmpeg GL转换命令
- ios - 是否可以在文本字段中显示之前修改自动填充字符串?
- ethereum - 如何使用 web3 解码日志并取回事件?
- python - 如何使用 alpha 通道为 png 图像着色?
- java - 无法使用 gson 和改造从对象读取数据
- entity-framework - 实体框架更新种子数据——数据运动迁移