c++ - 您如何断言所有 std::vector<std::string> 都是单行中的给定大小?

标签 c++ stl assert

我有一个方法接受一个 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/

相关文章:

c++ - 您如何在 Visual Studio 中生成具有随机输出名称的 PDB 文件?

c++ - 如何在 Linux 运行时检查堆栈使用情况?

c++ - 为 AVR 编译 c++0x

python - 检查数字 Python 代码中的参数

java - webdriver java中的assertTrue多个值

c++ - 为什么我不能在 C++ 中使用带有转发引用的特征?

c++ - C++标准算法中的ForwardIterator和OutputIterator能一样吗?

c++ - STL 列表和迭代器

c++ - 在向 vector 添加更多元素之前引用 vector 元素

c++ - 断言与 ATLASSERT 与断言