C++仅对一个元素集使用迭代器
Using C++ Iterator on a set of one only element
我几乎一直在使用迭代器来处理一组大小大于三个的元素,但碰巧生成的集合只包含一个元素,在这种情况下,以下循环:
for(i = data_set.begin(); i != data_set.end(); i++)
{
//do something with the data
}
即使"data_set"
不为空,也永远不会输入,因为data_set.begin()==data_set.end()
我正在做一个测试来处理这个特殊情况,但代码变得一团糟,不再干净。
应该怎么做才能正确处理这个问题?
谢谢
자스민
如果集合只包含 1 个元素,则: std::next( data_set.begin() ) == data_set.end()
,因为迭代器指向容器的第一个元素begin()
而end()
指向最后一个元素之后的下一个元素。
相关文章:
- 对于set上的循环-获取next元素迭代器
- 访问要输出的矢量迭代器元素
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- C++如何乘以包含 std::variant 元素的向量的迭代器?正在执行迭代器类型的转换?
- 调用 erase() 函数是否也会在擦除元素之前更改迭代器值?
- 为什么 min_element() 返回最小元素的索引,而不是迭代器?
- 如何通过查找迭代器结果分配给一组对的元素
- C++:在进行切片时对迭代器的约定,特别是对于访问最后一个元素并最终将其删除
- 将迭代器作为 3 个元素的滑动窗口,可以超调边界(可能使用 Boost)
- C++链表最后一个元素的迭代器?
- 使用索引与迭代器将向量迭代到倒数第二个元素
- 提升堆元素句柄比较和 MSVC 迭代器调试工具
- 如果我有一个指向矢量元素的指针,而不是迭代器,如何删除它?
- 使用迭代器打印矢量元素
- C++ std::vector语言 - 如何修改迭代器指定的元素?
- 你能pop_back一个向量,并且仍然使用迭代器到最后一个元素吗?
- 优先级队列(使用 pairs<int,int> ) 根据 for 循环迭代器的顶级元素
- C++ 当容器在使用前被破坏/修改时发出警告(通过引用元素或迭代器使用)
- 无法将 std::set 中的元素迭代器插入到 std::list
- 使用std :: remove_reference获取STL容器的元素迭代器