gpt4 book ai didi

c++ - 为什么我们有 std::string::npos 但没有 std::vector::npos?

转载 作者:太空狗 更新时间:2023-10-29 20:22:59 27 4
gpt4 key购买 nike

我想使用 -1 来表示尚未计算的大小:

std::vector<std::size_t> sizes(nResults, -1);

我想知道为什么没有更具表现力的方式:

std::vector<std::size_t> sizes(nResults, std::vector<std::size_t>::npos);

最佳答案

它基本上归结为一个相当简单的事实:std::string 包括搜索功能,这导致需要告诉调用者搜索失败。 std::string::npos 满足该要求。

std::vector 本身没有任何搜索功能,所以它不需要告诉调用者搜索失败。因此,它不需要等效于 std::string::npos

标准算法确实包括搜索,因此它们确实需要能够告诉调用者搜索失败。他们使用迭代器,而不是直接使用集合,因此他们为此使用了一个特殊的迭代器(一个永远不应该取消引用的迭代器)。碰巧的是,std::vector::end() 返回一个适合该目的的迭代器,所以它被使用了——但这或多或少是偶然的。这将在没有(例如)std::vector 的任何直接参与的情况下完成。

关于c++ - 为什么我们有 std::string::npos 但没有 std::vector::npos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442718/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com