C++中list详解

4 篇文章 11 订阅
订阅专栏

list的介绍

  1. list是序列容器,允许在序列中的任何位置执行固定O(1)时间复杂度的插入和删除操作,并在两个方向进行迭代。
  2. list容器使用双链表实现;双链表将每个元素存储在不同的位置,每个节点通过next,prev指针链接成顺序表。
  3. list与其他标准序列容器(array,vector和deque)相比,list通常可以在容器内的任何位置插入、提取和移动元素。
  4. list与其他标准序列容器(array,vector和deque)相比,list和forward_list(单链表实现)的主要缺点是他们不能通过位置直接访问元素;例如,要访问列表中的第五个元素,必须从已知位置(开始或结束)迭代到该位置,需要哦线性时间开销。
  5. 存储密度低,list要使用一些额外的内容空间(next,prev)来保持与每个元素相关联(前后续的线性)的链接信息,从而导致存储小元素类型(如char,short,int等)的列表的存储密度低。

在这里插入图片描述

list函数说明

成员类型

成员类型定义
value_typeT
allocator_typeAllocator
size_type无符号整数类型(通常是 std::size_t )
difference_type有符号整数类型(通常是 std::ptrdiff_t )
referencevalue_type&
const_referenceconst value_type&
pointervalue_type*
const_pointerconst value_type*
iterator指向 value_type 的双向迭代器
const_iterator指向 const value_type 的双向迭代器
reverse_iteratorstd::reverse_iterator
const_reverse_iteratorstd::reverse_iterator<const_iterator>

构造函数

函数功能
list();默认构造函数。构造拥有默认构造的分配器的空容器
list( size_type count,const T& value);构造拥有 count 个有值 value 的元素的容器。
explicit list( size_type count );构造拥有个 count 默认插入的 T 实例的容器。
list( InputIt first, InputIt last, const Allocator& alloc = Allocator() );构造拥有范围 [first, last) 内容的容器。
list( const list& other );复制构造函数。构造拥有 other 内容的容器。
list& operator=( const list& other );复制赋值运算符。以 other 的副本替换内容。
list& operator=( std::initializer_list ilist );以 initializer_list ilist 所标识者替换内容。
void assign( size_type count, const T& value );以 count 份 value 的副本替换内容。
template< class InputIt >
void assign( InputIt first, InputIt last );以范围 [first, last) 中元素的副本替换内容。
void assign( std::initializer_list ilist );以来自 initializer_list ilist 的元素替换内容
#include <iostream>
#include <list>

using namespace std;

template<class T>
void Print(const list<T>& my)
{
	typename list<T>::const_iterator it = my.begin();
	for (; it != my.end(); it++)
	{
		cout << *it << "\t";
	}

	cout << endl;
}

int main()
{
	list<int> list1 = { 12,23,34 };
	list<int> list2(3, 11);
	list<int> list3(list2);

	list<string> list4 = { "This","is","windows" };
	list<string> list5;
	list<string> list6;

	list5 = list4;

	list6.assign(3, "This");

	Print(list1);
	Print(list2);
	Print(list3);
	Print(list4);
	Print(list5);
	Print(list6);

	return 0;
}

在这里插入图片描述

元素访问

元素访问功能
reference front();返回到容器首元素的引用。
const_reference front() const;返回到容器首元素的引用。
reference back();返回到容器中最后一个元素的引用。
const_reference back() const;返回到容器中最后一个元素的引用。
#include <iostream>
#include <list>

using namespace std;

int main()
{
	list<int> list1 = { 12,23,34 };

	cout << "list1.front():" << list1.front() << endl;
	cout << "list1.back():" << list1.back() << endl;
	
	return 0;
}

在这里插入图片描述

迭代器

迭代器功能
iterator begin();返回指向 list 首元素的迭代器。
若 list 为空,则返回的迭代器将等于 end() 。
const_iterator begin() const;返回指向 list 首元素的迭代器。
若 list 为空,则返回的迭代器将等于 end() 。
iterator end();返回指向 list 末元素后一元素的迭代器。
const_iterator end() const;返回指向 list 末元素后一元素的迭代器。
reverse_iterator rbegin();返回指向逆向 list 首元素的逆向迭代器。
const_reverse_iterator rbegin() const;返回指向逆向 list 首元素的逆向迭代器。
reverse_iterator rend();返回指向逆向 list 末元素后一元素的逆向迭代器。
const_reverse_iterator rend() const;返回指向逆向 list 末元素后一元素的逆向迭代器。

67777

#include <iostream>
#include <list>

using namespace std;

int main()
{
	list<int> list1 = { 12,23,34 };

	list<int>::const_iterator it1 = list1.begin();
	for (; it1 != list1.end(); it1++)
	{
		cout << *it1 << "\t";
	}

	cout << endl;

	list<int>::reverse_iterator it2 = list1.rbegin() ;
	for (; it2 != list1.rend(); it2++)
	{
		cout << *it2 << "\t";
	}

	cout << endl;
	
	return 0;
}

在这里插入图片描述

容量

容量功能
bool empty() const;检查容器是否无元素,即是否 begin() == end() 。
size_type size() const;返回容器中的元素数,即 std::distance(begin(), end()) 。
size_type max_size() const;返回根据系统或库实现限制的容器可保有的元素最大数量,即对于最大容器的 std::distance(begin(), end()) 。
#include <iostream>
#include <list>

using namespace std;

int main()
{
	list<int> list1 = { 12,23,34 };

	cout << "list1.empty():" << list1.empty() << endl;
	cout << "list1.size():" << list1.size() << endl;
	cout << "list1.max_size():" << list1.max_size() << endl;

	return 0;
}

在这里插入图片描述

修改器

修改器功能
void clear();从容器擦除所有元素。此调用后 size() 返回零。
iterator insert( iterator pos, const T& value );在 pos 前插入 value 。
void insert( iterator pos, size_type count, const T& value );在 pos 前插入 value 的 count 个副本。
template< class InputIt >
void insert( iterator pos, InputIt first, InputIt last);在 pos 前插入来自范围 [first, last) 的元素
iterator insert( const_iterator pos, std::initializer_list ilist );在 pos 前插入来自 initializer_list ilist 的元素
iterator erase( iterator pos );移除位于 pos 的元素。
iterator erase( iterator first, iterator last );移除范围 [first; last) 中的元素。
void pop_back();移除容器的末元素。
void push_front( const T& value );前附给定元素 value 到容器起始。
void push_back( const T& value );后附给定元素 value 到容器尾。
void pop_front();移除容器首元素。
void resize( size_type count );重设容器大小以容纳 count 个元素。
void resize( size_type count, T value = T() );count - 容器的大小,value - 用以初始化新元素的值
void swap( list& other );将内容与 other 的交换。
#include <iostream>
#include <list>

using namespace std;

template<class T>
void Print(const list<T>& my)
{
	typename list<T>::const_iterator it = my.begin();
	for (; it != my.end(); it++)
	{
		cout << *it << "\t";
	}

	cout << endl;
}

int main()
{
	list<int> list1 = { 12,23,34 };
	list<int> list2 = { 1,2,3,4,5 };
	
	Print(list1);
	Print(list2);
	auto it = list1.begin();
	list1.insert(it, 55);
	Print(list1);
	it++;
	list1.insert(it, 3, 55);
	Print(list1);

	list1.erase(it);
	Print(list1);

	list1.swap(list2);
	Print(list1);
	Print(list2);


	return 0;
}

在这里插入图片描述

操作

操作功能
void merge( list& other );归并二个已排序链表为一个。链表应以升序排序。
void splice( const_iterator pos, list& other );从 other 转移所有元素到 *this 中。元素被插入到 pos 所指向的元素之前。操作后容器 other 变为空。
void splice( const_iterator pos, list& other, const_iterator it );从 other 转移 it 所指向的元素到 *this 。元素被插入到 pos 所指向的元素之前。
void splice( const_iterator pos, list& other, const_iterator first, const_iterator last);从 other 转移范围 [first, last) 中的元素到 *this 。元素被插入到 pos 所指向的元素之前。
void remove( const T& value );移除所有满足特定标准的元素。value - 要移除的元素的值
void reverse();逆转容器中的元素顺序。
void unique();从容器移除所有相继的重复元素。只留下相等元素组中的第一个元素。
void sort();以升序排序元素。保持相等元素的顺序。用 operator< 比较元素
template< class Compare >
void sort( Compare comp );以升序排序元素。保持相等元素的顺序。用给定的比较函数 comp 。
#include <iostream>
#include <list>

using namespace std;

template<class T>
void Print(const list<T>& my)
{
	typename list<T>::const_iterator it = my.begin();
	for (; it != my.end(); it++)
	{
		cout << *it << "\t";
	}

	cout << endl;
}

int main()
{
	list<int> list1 = { 2,1,9,5,3,7 };
	list<int> list2 = { 1,8,3,6,0,1,5 };
	
	Print(list1);
	Print(list2);

	list1.sort();
	list2.sort();

	Print(list1);
	Print(list2);

	list2.unique();
	Print(list2);

	list1.merge(list2);
	Print(list1);
	Print(list2);

	return 0;
}

在这里插入图片描述

vector和list区别

区别vectorlist
底层实现连续存储的容器,动态数组,在堆上分配空间动态双向链表,在堆上
空间利用率连续空间,不易造成内存碎片,空间利用率高节点不连续,易造成内存碎片,小元素使节点密度低,空间利用率低
查询元素iterator operator[];find O(n);binary_search O(logn)iterator find O(n)
插入和删除在最后插入(空间够):push_back(val);O(1)。在最后插入(空间不够):需要内存申请和释放,以及对之前数据进行拷贝。在之间插入(空间够):内存拷贝。在之间插入(空间不够):需要内存申请和释放,以及对之前数据进行拷贝。Insert(it,va) ,O(n)。在最后删除:pop_back(),O(1)。在之间删除:内存拷贝,不需要释放内存。erase(it),O(n)。resize(10):开辟空间,存储数据。reserve(10):只开辟空间,不存储数据。初始化vector空间,提高vector的使用效率。插入:O(1),需要申请内存。push_back(),O(1);erase(it) ,O(n);
迭代器连续的内存空间,支持随机迭代器,迭代器检查越界。支持++,–,+,+=,<,>,!=,==内存空间可以是不连续,它不支持随机访问,双向迭代器,迭代器检查越界。支持++,–,==,!=;list::iterator则不支持“+”、“+=”、“<”等
|

|迭代器失效 |插入和删除元素都会导致迭代器失效 |插入元素 |

总结

  1. vector底层实现是数组;list是双向链表。
  2. vector支持随机访问,list不支持。
  3. vector是顺序内存,list不是。
  4. vector在中间节点进行插入删除会导致内存拷贝,list不会。
  5. vector一次性分配好内存,不够时才进行扩容;list每次插入新节点都会进行内存申请。
  6. vector随机访问性能好,插入删除性能差;list随机访问性能差,插入删除性能好。

vector和list的使用场景

  1. vector拥有一段连续的内存空间,因此支持随机访问,如果需要高效的随机存取,而不在乎插入和删除的效率(很少使用插入和删除操作),选用vector
  2. list 拥有一段不连续的内存空间,如果需要大量的插入和删除的操作,随机存取很少使用,选用list。

仿写

见下篇

END!

C++list的使用总结及常用list操作
程序猿老樊的博客
02-26 8万+
一、List定义: List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件 #include  二、List定义和初始化:     listlst1;          //创建空list     list lst2(5);       //创建含有5个元素的list     listlst3(3,2);  /
C++ list详解
02-12
list详解 C++ STL C++ list
C++list的使用方法及常用list操作总结
12-26
C++list的使用方法及常用list操作总结 一、List定义: List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件 #include 二、List定义和初始化:     listlst1;          //创建空list     list lst2(5);       //创建含有5个元素的list     listlst3(3,2);  //创建含有3个元素的list     listlst4(lst2);    //使用lst2初始化lst4
C++初阶】第十一站:list的介绍及使用
最新发布
weixin_65186652的博客
05-14 1018
C++初阶】第十一站:list的介绍及使用 对于list容器的通用函数的使用讲解
C++List详解
m0_53889456的博客
05-11 6644
list容器详解,学我这一篇就够了。你写的C++list到底有什么不一样?都让人写烂的东西了你怎么还写?你比别人强?点进来看看你就知道有什么不一样了。
C++list基本接口+手撕 list详解迭代器)
小羊study_sheep的博客
10-09 2930
本篇难点在于手撕list,以及迭代器的理解,希望可以给大家带来帮助!
c++列表(list)
zbq3025456153的博客
08-08 6679
定义: 列表的核心是一个双向链表,双向开口,可在头、尾两个方向进行元素的插入和删除,因此list除了提供与vector相同的push_back(),和pop_back(),之外还提供在头部进行数据输入输出的操作函数。push_front()和pop_front()。因为链表内存空间不连续,所以不支持随即操作,既没有at()操作也不支持下标访问,只能从头到尾的顺序操作。下面是**的笔记我不是抄袭只是借鉴。...
C++——list超详细介绍
陌上人如玉,公子世无双。
08-22 1万+
listlist是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 list的底层是双向链表结构,双向链表每个元素存储在互不相关的独立节点,在节点通过指针指向其前一个元素和后一个元素。 list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。 与其他的序列式容器相比(a...
C++STL——list容器及其常用操作(详解
阿标de杂货铺
07-27 2465
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针链接次序实现的。链表由一系列结点(链表每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域。另一个是存储下一个结点地址的指针域。list容器的数据结构是一个双向循环链表。链表其优缺点为:采用动态存储分配,不会造成内存浪费和溢出,链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素,链表灵活,但是空间和时间额外耗费较大
C++list
CurryCoder的个人博客
04-13 639
1.Cpplist双向链表 list是顺序容器的一种,list是一个双向链表。使用list需要包含头文件list。双向链表的每个元素都有一个指针指向后一个元素,也有一个指针指向前一个元素,如图1所示。 在list容器,在已经定位到要增删元素的位置的情况下,增删元素能在常数时间内完成。如图2所示,在ai和ai+1之间插入一个元素,只需要修改ai和ai+1的指针即可。 list容器不支...
C++-----列表 list
热门推荐
一个人的学习和碎碎念
12-20 3万+
列表list         列表的核心是一个双向链表,双向开口,可在头、尾两个方向进行元素的插入和删除,因此list除了提供与vector相同的push_back(),和pop_back(),之外还提供在头部进行数据输入输出的操作函数。push_front()和pop_front()。因为链表内存空间不连续,所以不支持随即操作,既没有at()操作也不支持下标访问,只能从头到尾的顺序操作。  ...
C++ list的实例详解
01-20
C++ list的实例详解 Source: #include #include <list> #include #include using namespace std; typedef list<int> LISTINT; //创建一个list容器的实例LISTINT typedef list<int> LISTCHAR; //创建一个list...
C++ STL list详解及简单实例
01-01
C++ STL list详解 1、List: 内部实现是一个双向链表,可以高效的进行插入删除,但不能够进行随机访问 2.、示例程序: #include stdafx.h #include #include <list> #include #include using namespace std; ...
C++】STL——list的使用和介绍、list的构造函数及其使用、list迭代器及其使用
Crocodile1006的博客
07-19 1519
STL、list的介绍和使用、list的构造函数、list (size_type n, const value_type& val = value_type())、list() 构造空的listlist (const list& x) 拷贝构造函数、list (InputIterator first, InputIterator last)、list迭代器、begin + end、rbegin + rend
list用法深度解析,一篇文章弄懂list容器各种操作
在下马农的碎碎念
10-18 1711
C++ lsit容器 list和vector的区别 list遍历 list erase list用法 list容器 C++ list find list insert list find list splice C++ list remove std list list迭代器 cpp list C语言list list容器用法 list遍历 list 容器插入 两次list容器方法 list容器查找
C++】-list的具体使用
qq_69369227的博客
07-17 1498
list的具体使用
C++list用法&amp;&amp;简单模拟实现_list&amp;&amp; c+
2301_77033583的博客
04-17 550
至于operator–()/operator–(int)释放需要重载,根据具体的结构来抉择,双向链表可以向前移动,所以需要重载,如果是forward_list就不需要重载–至于operator–()/operator–(int)释放需要重载,根据具体的结构来抉择,双向链表可以向前移动,所以需要重载,如果是forward_list就不需要重载–至于operator–()/operator–(int)释放需要重载,根据具体的结构来抉择,双向链表可以向前移动,所以需要重载。
c ++ stl_获取列表的第一个和最后一个元素| C ++ STL
cumudi0723的博客
07-05 6792
c ++ stlGiven a list with some of the elements, we have to access its first and last elements of the list in C++ (STL) program. 给定包含某些元素的列表,我们必须在C ++(STL)程序访问列表的第一个和最后一个元素。 列表的front()和back()函数 (fr...
c++ - 第10节 - list
qq_45113223的博客
11-14 1073
注:1.普通正向迭代器和普通反向迭代器的使用方式如下图所示。
c++list和vector
08-25
C++list和vector是两种不同的容器类型。list是封装链表的容器,以链表形式实现。它不支持[]运算符,对随机访问的速度较慢,因为需要遍历整个链表来找到指定位置的元素。但是在插入数据方面,list的速度很快,因为只需要改变指针的指向而不需要拷贝和移动数据。 而vector是一个封装了动态大小数组的顺序容器。它在堆上分配一段连续的空间,起始地址不变。可以简单地将vector看作是一个能够存放任意类型的动态数组。由于vector拥有一段连续的内存空间,因此支持高效的随机访问。如果需要频繁进行随机访问操作而不在乎插入和删除的效率,可以选择使用vector。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [c++容器list、vector、map、set区别与用法详解](https://download.csdn.net/download/weixin_38747211/13713865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [一文读懂C++vector和list的区别](https://blog.csdn.net/caixiaobai_1/article/details/116459551)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • C++中list详解 43219
  • C语言实现UDP通信 15232
  • unordered_map详解 14070
  • 统计从键盘输入的一行字符中小写字母,大写字母,数字字符和其它字符的个数。 13553
  • c语言求1~10的阶乘和 12689

分类专栏

  • C++ 14篇
  • 指针 2篇
  • 结构体 6篇
  • 大端小端 2篇
  • 多线程 3篇
  • 类和对象 6篇
  • STL 4篇
  • 算法 14篇
  • 哈希 1篇
  • 二叉树 4篇
  • 递归与分治 4篇
  • 7篇
  • 工具函数 1篇
  • 动态内存分配 1篇
  • 最短路径 5篇
  • 小tip 1篇
  • 判断大小端 1篇
  • 排序 13篇
  • 冒泡排序
  • 随机数 1篇
  • C语言 28篇
  • 快速排序
  • 随机值数组
  • 非递归实现合并排序
  • 非递归合并排序
  • QT 12篇
  • 通信 2篇
  • QT创建第一个文件
  • 1篇
  • 括号匹配 1篇
  • 三数求和 1篇
  • 合并两个有序数组 1篇
  • 两数和 1篇
  • 单链表 1篇
  • 分治策略 2篇
  • 带头结点的单链表 4篇
  • 封装性 3篇
  • 对象之间的赋值 1篇
  • 拷贝构造函数 1篇
  • this指针 1篇
  • 笔记
  • .c和.cpp区别
  • c++和c语言的区别 1篇
  • 串的模式匹配算法 1篇
  • BF算法 1篇
  • 闰年 1篇
  • static关键字 1篇
  • static标记符 1篇
  • staticbiao'ji
  • 重复计数 2篇
  • 大数据处理 2篇
  • 顺序表 1篇
  • 带头结点循环链表 1篇
  • 数据结构 2篇
  • 字符串 3篇
  • 前置++ 1篇
  • 后置++ 1篇
  • 局部变量和全局变量 1篇
  • 进制转换 1篇
  • 程序执行过程 1篇
  • 字符串常量 1篇
  • 字符串变量 1篇
  • 动态内存管理 1篇
  • 动态开辟二维数组 1篇
  • 联合体 2篇
  • 动态规划 3篇
  • 矩阵连乘积最优计算次数 1篇
  • 结构体成员变量初始化,赋值,比较大小 1篇
  • 字符串连接 1篇
  • 字符串长度 1篇
  • 字符串copy 1篇
  • 循环、递归、指针相减 1篇
  • 字符数组 1篇
  • static 1篇
  • extern 1篇
  • 可见性 1篇
  • 生存期 1篇
  • 线性时间选择 1篇
  • 合并排序 1篇
  • 汉诺塔问题 1篇
  • 棋盘覆盖 1篇
  • 二分搜索 1篇
  • 递归非递归 1篇
  • 递归实现三柱汉诺塔问题 1篇
  • 递归实现整数划分 1篇
  • 数据类型的截取和扩充 1篇
  • 不同数据类型的相加减 1篇
  • 指针所占字节数 1篇
  • 二维数组初始化 1篇
  • 二维数组的访问 1篇
  • 二维数组行列互换输出 1篇
  • 杨辉三角 1篇
  • 二维数组 1篇
  • 强制转化 1篇
  • bool--int 1篇
  • 指针相减 1篇
  • 数组 4篇
  • 循环 2篇
  • 数组元素的左移右移 1篇
  • const 1篇
  • 指针和数组的关系 1篇
  • 指针++ 1篇
  • 指针结合方向 1篇
  • 优先级 2篇
  • 亏数 1篇
  • 贪心算法 1篇
  • 活动安排 1篇
  • C++语言
  • 0-1背包问题 1篇
  • 多文件 1篇
  • 加减乘除 1篇
  • 最长公共子序列 1篇
  • 日期 - 日期得到天数 1篇
  • 日期+天数 = > 日期 的结果 1篇
  • 整型,浮点型 1篇
  • 字节数 1篇
  • 程序 7篇
  • 最大公约数 2篇
  • 生存期和可见性
  • 辗转相乘法 1篇
  • 字符,字符串 1篇
  • 常量 1篇
  • 兔子问题
  • 单词个数 1篇
  • 斐波那契数列 1篇
  • 猜数游戏 1篇
  • 阶乘和 1篇
  • 9*9乘法表 1篇
  • 书写规则 1篇
  • 正序,逆序输出 1篇
  • ","表达式 1篇
  • " ",表达式
  • "
  • 链式队列 1篇
  • 顺序栈 1篇

最新评论

  • C++中list详解

    CX-max: 不能直接定位it吧,得从begin或者end开始沿着链找

  • C++中list详解

    Ding Zhicong: list的erase(it)为什么不是O(1)?

  • QT----文件的读取,写入,保存;二进制、配置文件的读写

    星星落进眼睛: 请问有项目源码嘛

  • C++实现银行家算法

    无妨无妨: 有bug 一直按2 work自己增长

  • C++实现银行家算法

    无妨无妨: safecheck的两重循环为什么

大家在看

  • C语言-存储类别,链接和内存管理-5
  • C语言程序设计-10 指针 658
  • 中国地质大学许少辉著《乡村振兴战略下传统村落文化旅游设计》图书馆荐购辉少许 1191
  • 好代码资源网整站打包代码(包含了最新数据),集成了深度二开的ripro主题,非常适合做资源网站创业用 1673
  • c++输出62进制2位数秩序律法理式代码正确例题 509

最新文章

  • 模板(模板函数+模板类)
  • c++指针详解
  • 结构体和联合体详解
2023年4篇
2022年64篇
2021年20篇
2020年92篇
2019年3篇

目录

目录

分类专栏

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源姓石起名字奔跑原唱合金装备崛起复仇英文名亲爱的自己免费观看广东体育节目表托马斯过河梓字辈起名姓李男孩起名字洋气一点的机箱风扇方向起公司名字大师徐祯卿姓史的女宝宝起名大全宝宝取名起名大全杨姓塑料板材想给美睫店起个名字雷打雪崔字起名男孩昵称大全赵姓氏起名周易预测起名属猪2019年运势烧烤起什么名子七位高人预言未来圣人又见九叔属猪起名女孩名字思念的诗句豪字起名名字男孩大全时间海女婴起名刘钢铁侠国语龙宝宝的起名大全淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化