c – FIFO实现
发布时间:2020-12-16 09:28:22 所属栏目:百科 来源:网络整理
导读:在实现FIFO时,我使用了以下结构: struct Node{ T info_; Node* link_; Node(T info,Node* link=0): info_(info),link_(link) {}}; 我认为这是许多STL容器(例如List)的众所周知的技巧.这是一个好习惯吗?当你说Node有一个带有类型指针的成员时,它对编译器意
在实现FIFO时,我使用了以下结构:
struct Node { T info_; Node* link_; Node(T info,Node* link=0): info_(info),link_(link) {} }; 我认为这是许多STL容器(例如List)的众所周知的技巧.这是一个好习惯吗?当你说Node有一个带有类型指针的成员时,它对编译器意味着什么?这是一种无限循环吗? 最后,如果这是一个不好的做法,我如何能够实现更好的FIFO. 编辑:人们,这完全是关于实施.我对STL库非常熟悉,并且知道来自多个库的大量容器.我想与能够提供良好实施或良好建议的人讨论. 解决方法
指向被声明类型的对象的指针在C和C中都很好.这是基于指针是固定大小的对象(例如,在32位平台上始终是32位整数)的事实,因此您不需要知道指向类型的完整大小.
实际上,您甚至不需要完整的类型声明来声明指针.前瞻性声明就足够了: class A; // forward declared type struct B { A* pa; //< pointer to A - perfectly legal }; 当然,在实际访问成员时,您需要在范围内进行完整声明: #include <A.hpp> // bring in full declaration of class A ... B b; b.pa = &a; // address of some instance of A ... b.pa->func(); // invoke A's member function - this needs full declaration 对于FIFO,请查看std :: queue. std :: list,std :: deque和std :: vector都可以用于此目的,但也提供其他功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |