std :: set <std :: pair <size_t,std :: string >>> :: find(),没有字符串复制结构

Jam*_*ock 3 c++ stl

我有一个std :: std ::对,第二对是一个字符串.我想检查一下是否存在一对.

std::set< std::pair<size_t, std::string> > set_;

bool exists(size_t x, const std::string& s)
{
    std::set< std::pair<size_t, std::string> >::iterator i = set_.find(std::make_pair(x, s)); // copy of s is constructed by make_pair!
    return i != set_.end();
}

我经常调用这个函数(是的,非常经常),所以我想在不制作字符串的临时副本的情况下执行此检查.有没有办法做到这一点,就像我在这里一样简单和简洁,但是没有制作字符​​串的临时副本?使用STL或Boost容器的任何解决方案都会很好.

Dew*_*wfy 5

使用指向字符串的指针并覆盖谓词少(参见std :: set的构造函数)