首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用嵌套的for循环使代码的c++效率更高

使用嵌套的for循环使代码的c++效率更高
EN

Stack Overflow用户
提问于 2020-05-02 12:06:13
回答 1查看 52关注 0票数 1

我目前被困在尝试嵌套几个for循环。我将发布代码,然后解释它。

代码语言:javascript
复制
void IdeaBank::AND_searchQuery(string search_word1, string search_word2){

    vector <int> match;


    for (int i=0;i<newIdea.size();i++)
    { 
        for (int j=0;j<newIdea[i].getKeyword().size();j++)
        {

            if ( (newIdea[i].getKeyword()[0] == search_word1) && (newIdea[i].getKeyword()[j] == search_word2) )
            {
                match.push_back(newIdea[i].getID());
            }
            if ( (newIdea[i].getKeyword()[1] == search_word1) && (newIdea[i].getKeyword()[j] == search_word2) )
            {
                match.push_back(newIdea[i].getID());
            }
            if ( (newIdea[i].getKeyword()[2] == search_word1) && (newIdea[i].getKeyword()[j] == search_word2) )
            {
                match.push_back(newIdea[i].getID());
            }
        }
    }

    for (int i=0;i<match.size();i++)
    {
        displayIdeaByID(match[i]);
    }   
}

上面的代码做了什么,并检查两个关键字是否出现在相同的想法中,如果出现,则打印该想法。第一个循环遍历我所有的想法,第二个循环遍历1个想法的所有关键字。

我试图实现的是看看是否两个搜索词都出现在1想法的关键字中。

上面的代码通过检查匹配的所有关键字来正确工作,但它只基于3个关键字。用户输入的关键字也有n个。

我正在尝试找到一种更有效的方法来检查两个搜索词是否都在一个想法的关键字中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-02 12:16:31

如果您正在搜索两个搜索词都在给定项目的关键字列表中的情况,则可以只使用std::find而不是内部循环。例如:

代码语言:javascript
复制
for (auto&& idea : newIdea)
{ 
    const auto& keywords = idea.getKeywords();
    bool found1 = std::find(keywords.begin(), keywords.end(), search_word1) != keywords.end();
    bool found2 = std::find(keywords.begin(), keywords.end(), search_word2) != keywords.end();

    if( found1 && found2 ) {
        match.push_back(idea.getID());
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61554320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档