dlang语言类似java以下 数据结构的对应结构 List有序可重复 ArrayList 底层数据结构是数组查询快增删慢 线程不安全效率高 Vector 底层数据结构是数组查询快增删慢 线程安全效率低
在D语言中,List对应的数据结构是Array,Array可以存储有序且可重复的元素。下面分别介绍ArrayList、Vector和LinkedList的用法:
- ArrayList
ArrayList是基于数组实现的,可以存储有序且可重复的元素。以下是ArrayList的典型用法:
import std.container;
void main()
{
ArrayList!int list = new ArrayList!int();
// 添加元素
list.insertBack(1);
list.insertBack(2);
list.insertBack(3);
// 查询元素
assert(list[0] == 1);
assert(list[1] == 2);
assert(list[2] == 3);
// 修改元素
list[1] = 4;
assert(list[1] == 4);
// 删除元素
list.remove(2);
assert(list.length == 2);
}
- Vector
Vector也是基于数组实现的,可以存储有序且可重复的元素。与ArrayList不同的是,Vector是线程安全的。以下是Vector的典型用法:
import std.container;
void main()
{
Vector!int vec = new Vector!int();
// 添加元素
vec.insertBack(1);
vec.insertBack(2);
vec.insertBack(3);
// 查询元素
assert(vec[0] == 1);
assert(vec[1] == 2);
assert(vec[2] == 3);
// 修改元素
vec[1] = 4;
assert(vec[1] == 4);
// 删除元素
vec.remove(2);
assert(vec.length == 2);
}
- LinkedList
LinkedList是基于链表实现的,可以存储有序且可重复的元素。与ArrayList和Vector不同的是,LinkedList的查询操作比较慢,但增删操作比较快。以下是LinkedList的典型用法:
import std.container;
void main()
{
LinkedList!int list = new LinkedList!int();
// 添加元素
list.insertBack(1);
list.insertBack(2);
list.insertBack(3);
// 查询元素
auto iter = list.front;
assert(iter.data == 1);
iter = iter.next;
assert(iter.data == 2);
iter = iter.next;
assert(iter.data == 3);
// 修改元素
iter = list.front.next;
iter.data = 4;
assert(iter.data == 4);
// 删除元素
list.remove(iter);
assert(list.length == 2);
}
``
原文地址: http://www.cveoy.top/t/topic/fzub 著作权归作者所有。请勿转载和采集!