相关疑难解决方法(0)

如何使我的自定义类型与"基于范围的for循环"一起使用?

像许多人一样,我一直在尝试C + 11带来的不同功能.我最喜欢的一个是"基于范围的循环".

我明白那个:

for(Type& v : a) { ... }
Run Code Online (Sandbox Code Playgroud)

相当于:

for(auto iv = begin(a); iv != end(a); ++iv)
{
  Type& v = *iv;
  ...
}
Run Code Online (Sandbox Code Playgroud)

而这begin()只是返回a.begin()标准容器.

但是,如果我想让我的自定义类型"基于范围的循环" - 意识到什么?

如果我只是专注begin()end()

如果我的自定义类型属于命名空间xml,我应该定义xml::begin()还是std::begin()

简而言之,这样做的准则是什么?

c++ customization for-loop c++11

230
推荐指数
5
解决办法
7万
查看次数

C++ 11:来自第二个元素的范围循环向量?

我有std::vector<std::string> v;(初始化).如何使用range-for循环访问除第一个元素之外的所有元素(在索引0上).对于所有元素:

for (const string & s: v)
    process(s);
Run Code Online (Sandbox Code Playgroud)

代替的v范围的表达可以使用.如何编写范围表达式以跳过第一个元素(或跳过前n个元素)

我知道如何使用v.begin() + 1和使用经典循环来获得效果.我正在寻找新的,更具可读性的推荐替代方案.可能类似于Python切片的东西?...喜欢:

for s in v[1:]:
    process(s)
Run Code Online (Sandbox Code Playgroud)

for-loop stdvector c++11

6
推荐指数
2
解决办法
3885
查看次数

标签 统计

c++11 ×2

for-loop ×2

c++ ×1

customization ×1

stdvector ×1