“cpp/ranges/split view/begin”的版本间的差异
来自cppreference.com
< cpp | ranges | split view
YexuanXiao(讨论 | 贡献) 小 |
YexuanXiao(讨论 | 贡献) 小 (sync eng) |
||
第10行: | 第10行: | ||
返回指向找到的第一个子范围的{{rlp|iterator|迭代器}}。 | 返回指向找到的第一个子范围的{{rlp|iterator|迭代器}}。 | ||
− | 为提供 {{lconcept|range}} 概念要求的均摊常数复杂度,此函数在 {{tt|split_view}} 中缓存了结果以供后续调用所用。等价于: | + | 为提供 {{lconcept|range}} 概念要求的均摊常数复杂度,此函数在 {{tt|split_view}} 中缓存了结果 以供后续调用所用 |
+ | |||
+ | 。等价于: | ||
+ | |||
{{source|1= | {{source|1= | ||
constexpr /*iterator*/ begin() | constexpr /*iterator*/ begin() | ||
第19行: | 第22行: | ||
} | } | ||
}} | }} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
===返回值=== | ===返回值=== | ||
− | + | {{rlp|iterator|迭代器}}。 | |
===复杂度=== | ===复杂度=== |
2025年1月29日 (三) 01:09的最后版本
constexpr /*iterator*/ begin(); |
(C++20 起) | |
返回指向找到的第一个子范围的迭代器。
为提供 range
概念要求的均摊常数复杂度,此函数在 split_view
中缓存了结果(通过 cached_begin_
成员)以供后续调用所用。
让 base_
作为底层数据成员。等价于:
constexpr /*iterator*/ begin() { if (!cached_begin_.has_value()) cached_begin_ = this->find_next(ranges::begin(base_)); return {*this, ranges::begin(base_), cached_begin_.value()}; }
目录 |
[编辑] 返回值
迭代器。
[编辑] 复杂度
均摊的 O(1)。
[编辑] 示例
运行此代码
#include <iomanip> #include <iostream> #include <ranges> #include <string_view> int main() { constexpr std::string_view sentence{"Keep..moving..forward.."}; constexpr std::string_view delim{".."}; std::ranges::split_view words{sentence, delim}; std::cout << "begin(): " << std::quoted(std::string_view{*words.begin()}) << "\n子字符串: "; for (auto word : words) std::cout << std::quoted(std::string_view(word)) << ' '; std::ranges::split_view letters{sentence, std::string_view{""}}; std::cout << "\nbegin(): " << std::quoted(std::string_view{*letters.begin()}) << "\n字母: "; for (auto letter : letters) std::cout <<