性能/安全检查有什么区别
vector 元素使用

  • for迭代器循环


  • std:find_if(...)?


  • 1. for循环
    // 1. for loop
    for (llvm::SmallVectorImpl<myClass>::const_iterator it = v.begin();
         it != v.end();
         ++it) {
        if (it->getName() == Name) {
            // found element
            // do smth...
            break;
        }
    }
    



    2. std:find_if
    // 2. find if
    llvm::SmallVectorImpl<myClass>::const_iterator it
        = std::find_if(v.begin(),
                       v.end(),
                       StringCheck<llvm::StringRef>(Name));
    if (it != v.end()) {
        // found element
        // do smth...
    }
    
    // StringCheck defined in header...
    
    template <class T>
    struct StringCheck{
        StringCheck(const T &s) : s_(s) {}
        bool operator()(const myClass &obj) const
        {
            return obj.getName() == s_;
        }
    private:
        const T &s_;
    };
    

    最佳答案

    找到匹配项后,您的for循环将继续进行迭代。如果可能有多个匹配项,并且您要为每个匹配项运行代码,那么这可能是一件好事;如果您想在找到匹配项并且在大型容器中找到匹配项后立即停止,则这可能是一件坏事。

    09-10 03:44
    查看更多