列表中的数据结构
Data structure in List
template <class type> class list
{
private:
struct element
{
type data;
element* prev;
element* next;
};
element* begin;
element* end;
int size;
public:
list()
{
begin = NULL;
end = NULL;
size = 0;
}
// data is copied twice. (why? how to solve it?)
void add_at_beginning(type data)
{
element* temp = new element;
temp->next = NULL;
temp->prev = NULL;
temp->data = data;
if (size == 0)
{
begin = end = temp;
size++;
}
else
{
temp->next = begin;
begin->prev = temp;
begin = temp;
size++;
}
}
};
在名为void add_at_beginning(type data)
有问题的函数中,我将问题写在注释中。
也就是说,我不明白说数据被复制两次是什么意思,最重要的是我如何解决这个问题,以便没有人说在这个代码中数据被复制两次。
您的函数void add_at_beginning(type data)
按值获取其数据参数,这意味着当您调用该函数时,会创建数据的副本。
然后,当您分配temp->data = data;
时,将创建第二个副本。这就是为什么你被告知在你的代码中数据被复制两次。
您可以通过引用数据参数来避免其中一个副本。如果您的类与大型类型一起使用,这可能会带来一些性能改进。
如果将函数的原型更改为:
void add_at_beginning(const type& data)
然后只会制作一份副本。
相关文章:
- 当接收到不明确的规范时,表示图的邻接列表的数据结构
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- C++ 中带有列表的树数据结构
- 尝试创建排序的动态列表(数据结构)
- 如何将边缘列表转换为DCEL数据结构
- 如何检索指向列表数据结构中的变量的指针?
- Qt:通过深度复制访问列表中的数据结构是否应该比通过指针访问它慢得多
- 嵌套的C 常数数据结构,没有初始化列表或明确命名所有节点-VC 2012过早破坏了内部元素
- 在C++中,是否可以引用像C++中的stl列表这样的数据结构部分
- C++数据结构列表,在我的代码中
- 列表中的数据结构
- 说 C++ 中的数组或 Python 中的列表是一个类是否正确?数据结构?或两者兼而有之
- 用于处理 3 个整数列表的数据结构
- 如何使用智能指针(例如auto_ptr r shared_ptr)在 Linux 上的C++中生成链接列表数据结构
- 这是一个具有基于数组的列表函数的数据结构项目,我似乎无法摆脱这个无限循环。
- 如何从 CGAL 中的坐标和拓扑列表创建Polyhedron_3数据结构
- 用于存储地址的单列列表的数据结构,更好地在C++中查找O(1)
- 用于存储元组键的数据结构:参数关系列表
- C++数据结构来执行索引列表
- 如何填充数据结构列表