【发布时间】:2016-05-28 07:57:50
【问题描述】:
我想用 -1 表示尚未计算的大小:
std::vector<std::size_t> sizes(nResults, -1);
我想知道为什么没有更具表现力的方式:
std::vector<std::size_t> sizes(nResults, std::vector<std::size_t>::npos);
【问题讨论】:
-
std::string 很奇怪。它的成员太多,太奇怪了。真正的问题是为什么字符串不像向量。 (答案可能是 C。)
-
vector没有find。 -
npos几乎可以替代.end()作为索引而不是迭代器。std::vector没有基于索引的函数,因此存在结束/无效索引是没有意义的。 -
至于更表达的方式为什么不
std::numeric_limits<std::size_t>::max()或者如果你真的想全力以赴std::numeric_limits<std::vector<whatever_type>::size_type>::max()? -
@chris - 是的,
std::string早于添加 STL。 Uwe Steinmüller 和我设计了最初的版本(包括npos),之后很多人都踩到了。
标签: c++ containers c++-standard-library