Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C+;中向自己的集合类添加foreach迭代支持+;? 我创建了一个C++类型的集合实现。 我想添加迭代支持,以便开发人员可以在其上使用“for-each”语句。 我该怎么做呢?_C++_Foreach_Iteration - Fatal编程技术网

如何在C+;中向自己的集合类添加foreach迭代支持+;? 我创建了一个C++类型的集合实现。 我想添加迭代支持,以便开发人员可以在其上使用“for-each”语句。 我该怎么做呢?

如何在C+;中向自己的集合类添加foreach迭代支持+;? 我创建了一个C++类型的集合实现。 我想添加迭代支持,以便开发人员可以在其上使用“for-each”语句。 我该怎么做呢?,c++,foreach,iteration,C++,Foreach,Iteration,假设你指的是每个算法的,您只需要表示标准的begin和end容器方法的东西:指向逻辑容器中第一个端点和一个过去端点的迭代器。标准习惯用法是:公开类型iterator和const\u迭代器,并至少提供两个函数,即begin()和end() template</*.....*/> class Collection { public: typedef /*...*/ iterator; typedef /*...*/ const_iterator; ite

假设你指的是每个算法的
,您只需要表示标准的
begin
end
容器方法的东西:指向逻辑容器中第一个端点和一个过去端点的迭代器。

标准习惯用法是:公开类型
iterator
const\u迭代器
,并至少提供两个函数,即
begin()
end()

template</*.....*/>
class Collection
{
 public:
     typedef /*...*/ iterator;
     typedef /*...*/ const_iterator;

     iterator begin();
     iterator end();

     const_iterator begin() const;
     const_iterator end() const;
};
模板
类集合
{
公众:
typedef/*…*/迭代器;
typedef/*…*/const_迭代器;
迭代器begin();
迭代器end();
常量迭代器begin()常量;
常量迭代器end()常量;
};

一旦您实现了这些,您的集合就可以用于
std::for_each
,以及在

中定义的许多其他算法函数中。如果您指的是STL的
for_each
算法,您只需要像STL容器一样定义
begin()
end()

如果您指的是C++0x基于范围的for循环,那么您可以做同样的事情。

使用名称空间std;
using namespace std;

// very very simple container class
class Cont {
public:
    Cont() {}
    typedef char* iterator;
    iterator begin() {return arr;}
    iterator end() {return &arr[200];}

private:
    char arr[200];
};

void setit(char &it) {
    it = 'a';
} 
// iterator must provide ++ operation for for_each algorithm (char* in this example works this way)
int main() {
    Cont c;
    for_each(c.begin(), c.end(), setit);
    copy(c.begin(), c.end(), ostream_iterator<char>(cout, ","));
    return 0;
}
//非常简单的容器类 类Cont{ 公众: Cont(){} typedef char*迭代器; 迭代器begin(){return arr;} 迭代器end(){return&arr[200];} 私人: char-arr[200]; }; void setit(char&it){ 它='a'; } //迭代器必须为每个算法提供++操作(本例中的char*就是这样工作的) int main(){ 续c; 对于每个(c.begin()、c.end()、setit); 复制(c.begin(),c.end(),ostream_迭代器(cout,“,”); 返回0; }
c++没有foreach语句。在C++11中有一种for循环,它执行foreach-你的意思是?你的意思是说它可以在for循环中使用吗?或者你在看BOOST_FOREACH?我想VisualStudio2008有一个FOREACH实现我在这里看到了。。。没有意识到它只在C++中。该死的微软@Che:那是标准C++。foreach应该是C++/CLI…