我有一个方法接受一个 std::vector 的 sha1 散列作为字符串,它必须恰好 20 个字符长。最好用一行代码断言这一先决条件得到尊重。
void MyClass::setSha1Sums(const std::vector<std::string>& sha1Sums)
{
assert(magic_oneliner_which_verifies_that_all_strings_are_20_chars_long);
sha1Sums_ = sha1Sums;
}
最佳答案
C++03,带提升 (>= 1.33):
std::find_if( sha1Sums.begin(), sha1Sums.end()
, boost::bind( &std::string::size, _1 ) != 20U
) == sha1Sums.end();
请注意,!=
是一个重载运算符,它增加了供应量,使构建更复杂的绑定(bind)更简单,这些绑定(bind)使用基本的关系和逻辑运算符。
http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html#operators
关于c++ - 您如何断言所有 std::vector<std::string> 都是单行中的给定大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927531/