【发布时间】:2021-06-01 19:01:31
【问题描述】:
对于像 std::set<std::string> set={ "aaa", "bbb", "ccc", "ddd", "eee", "fff" }; 这样的 std::set
如何在不跟踪额外索引的情况下迭代该集合的特定范围 [a, b]?
类似这样的:
for(auto it = set.begin(); it!=set.begin()+b; ++it)
std::cout << *it << " ";
或者像这样:
for(auto it = set.begin()+a; it!=set.begin()+b; ++it)
std::cout << *it << " ";
a<=b 和 b<=set.size() 的位置
【问题讨论】:
-
std::set没有随机访问权限iterator。它有一个双向的iterator。你不能那样做。 -
你到底要问什么,从集合中以“a”开头的所有元素到以“b”结尾的所有元素的范围(比方说 3-5)?
-
@ThePhilomath 我知道!但是可以在 for 循环中使用额外的索引来完成,但是我想知道是否有更好的方法来做到这一点!
标签: c++ stl associative-array