的std ::列表< T> ::迭代 [英] std::list<T>::iterator

查看:72
本文介绍了的std ::列表< T> ::迭代的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人知道如何为该迭代器制作包装器吗?这是我的

std :: list的包装类:


模板< class Tclass List {

private:

std :: list< T * lst;

public:

List(){lst = new std :: list< T>( ); } $ / $
List(const List< T& rhs){lst = new std :: list< T>(* rhs.lst); } $ / $
List(int n,const T& value){lst = new std :: list< T>(n,value); }

~List(){delete lst; }


void push_back(const T& value){lst-> push_back(value); }

void push_front(const T& value){lst-> push_front(value); }

void pop_back(){lst-> pop_back; }

void pop_front(){lst-> pop_front; }

void remove(const T& value){lst-> remove(value); }

};

解决方案

On 2008-05-22 13:02:39 -0400, Isliguezze<是******** @ gmail.comsaid:


有谁知道如何为该迭代器制作包装器?这是我的

std :: list的包装类:



这个类的目的是什么?
< blockquote class =post_quotes>
>

template< class Tclass List {

private:

std :: list< ; T * lst;

public:

List(){lst = new std :: list< T>(); } $ / $
List(const List< T& rhs){lst = new std :: list< T>(* rhs.lst); } $ / $
List(int n,const T& value){lst = new std :: list< T>(n,value); }

~List(){delete lst; }


void push_back(const T& value){lst-> push_back(value); }

void push_front(const T& value){lst-> push_front(value); }

void pop_back(){lst-> pop_back; }

void pop_front(){lst-> pop_front; }

void remove(const T& value){lst-> remove(value); }

};



-

Pete

Roundhouse Consulting,Ltd。( www.versatilecoding.com )作者

标准C ++库扩展:教程和参考

www.petebecker.com/tr1book


Isliguezze写道:


有人知道如何为该迭代器制作包装器吗?



为什么?


这是'我的

包装类for std :: list:


template< class Tclass List {

private:

std :: list< T * lst;

public:

List(){lst = new std :: list< T>(); } $ / $
List(const List< T& rhs){lst = new std :: list< T>(* rhs.lst); }



赋值操作缺失(参见规则三)。


List(int n, const T& value){lst = new std :: list< T>(n,value); }

~List(){delete lst; }


void push_back(const T& value){lst-> push_back(value); }

void push_front(const T& value){lst-> push_front(value); }

void pop_back(){lst-> pop_back; }

void pop_front(){lst-> pop_front; }

void remove(const T& value){lst-> remove(value); }

};



这个包装器似乎非常薄,并且除了提供任何额外的

功能之外std :: list中已有的内容。在创建这样的包装器时,你会想到什么?b $ b?也许如果你能够解释你的设计目标,那么就可以更容易地为it />
迭代器提出一个解决方案...


V

-

请在通过电子邮件回复时删除资金''A'

我不回复热门帖子回复,请不要问


这堂课的目的是什么?

好​​问题。它有点像我想了解STL一点点

更好。你知道,我必须实现一个列表。无论如何。所以我决定使用STL将它写成
。另外,正如我之前所说,我想知道所有这些都是煮熟的。


Does anybody know how to make a wrapper for that iterator? Here''s my
wrapper class for std::list:

template <class Tclass List {
private:
std::list<T*lst;
public:
List() { lst = new std::list<T>(); }
List(const List<T&rhs) { lst = new std::list<T>(*rhs.lst); }
List(int n, const T& value) { lst = new std::list<T>(n, value); }
~List() { delete lst; }

void push_back(const T& value) { lst->push_back(value); }
void push_front(const T& value) { lst->push_front(value); }
void pop_back() { lst->pop_back; }
void pop_front() { lst->pop_front; }
void remove(const T& value) { lst->remove(value); }
};

解决方案

On 2008-05-22 13:02:39 -0400, Isliguezze <is********@gmail.comsaid:

Does anybody know how to make a wrapper for that iterator? Here''s my
wrapper class for std::list:

What is the purpose of this class?

>
template <class Tclass List {
private:
std::list<T*lst;
public:
List() { lst = new std::list<T>(); }
List(const List<T&rhs) { lst = new std::list<T>(*rhs.lst); }
List(int n, const T& value) { lst = new std::list<T>(n, value); }
~List() { delete lst; }

void push_back(const T& value) { lst->push_back(value); }
void push_front(const T& value) { lst->push_front(value); }
void pop_back() { lst->pop_back; }
void pop_front() { lst->pop_front; }
void remove(const T& value) { lst->remove(value); }
};


--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
Standard C++ Library Extensions: a Tutorial and Reference
(www.petebecker.com/tr1book)


Isliguezze wrote:

Does anybody know how to make a wrapper for that iterator?

What for?

Here''s my
wrapper class for std::list:

template <class Tclass List {
private:
std::list<T*lst;
public:
List() { lst = new std::list<T>(); }
List(const List<T&rhs) { lst = new std::list<T>(*rhs.lst); }

The assignment op is missing (see Rule of Three).

List(int n, const T& value) { lst = new std::list<T>(n, value); }
~List() { delete lst; }

void push_back(const T& value) { lst->push_back(value); }
void push_front(const T& value) { lst->push_front(value); }
void pop_back() { lst->pop_back; }
void pop_front() { lst->pop_front; }
void remove(const T& value) { lst->remove(value); }
};

This wrapper seems awfully thin and doesn''t provide any additional
functionality beyond what''s already available in std::list. What do you
have in mind when creating a wrapper like this? Perhaps if you could
explain your design goals it would be easier to suggest a solution for
the iterator...

V
--
Please remove capital ''A''s when replying by e-mail
I do not respond to top-posted replies, please don''t ask


What is the purpose of this class?
Good question. It is kind of "I want to understand STL a little bit
better". You know, I have to implement a "list" anyhow. So I decided
write it using STL. Also, as I told before, I want to know how all
this is cooked.


这篇关于的std ::列表&LT; T&GT; ::迭代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆