你如何断言所有std :: vector <std :: string>都是一行中的给定大小?

Kri*_*ian 3 c++ assert stl

我有一个方法接受sha1哈希的std :: vector作为字符串,其长度必须为20个字符.在单行中断言这个前提条件得到尊重将是很好的.

void MyClass::setSha1Sums(const std::vector<std::string>& sha1Sums)
{
  assert(magic_oneliner_which_verifies_that_all_strings_are_20_chars_long);
  sha1Sums_ = sha1Sums;
}
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 5

C++ 03,带增强(> = 1.33):

std::find_if( sha1Sums.begin(), sha1Sums.end()
            , boost::bind( &std::string::size, _1 ) != 20U
                ) == sha1Sums.end();
Run Code Online (Sandbox Code Playgroud)

请注意,这!=是一个重载运算符,它可以提升供应量,从而构建更复杂的绑定,使用基本的关系和逻辑运算符更简单.

http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html#operators