C++:STL:常用算法:遍历,查找,排序算法

50 篇文章 20 订阅
订阅专栏

概述:

  • 算法主要是由头文件 <algorithm>,<functional>, <numeric> 组成。
  • <algorithm> 是所有STL头文件中 最大的一个,范围涉及到:比较,交换,查找,遍历,复制,修改等操作
  • <numeric> 体积最小,只包括几个在序列上进行简单数学运算的模板函数
  • <functional>  定义了一些模板类,用以声明函数对象

一:常用的遍历算法

学习目标:掌握常用的遍历算法

算法简介:

for_each    // 遍历容器

transform  // 搬运容器到另一个容器中

1.1: for_each 

功能描述:实现遍历容器

函数原型:for_each(iterator beg, iterator end, _func)

遍历算法: 遍历容器元素

beg:   // 开始迭代器

end :    // 结束迭代器

_func  // 普通函数或者函数对象(仿函数)

源码分析

案例:使用 for_each 并指定函数对象,来完成遍历元素的操作

/**
	STL : 常见算法
*/
#include<string>
#include<iostream>
#include<algorithm>
#include<vector>
#define NUM 10
using namespace std;

void print01(int val) {
	cout << val << " ";
}

// 仿函数
class Printo2
{
public:
	void operator()(int val) {
		cout << val << "  ";
	}
};

void test() {
	vector<int> v;
	for (int i = 0; i < NUM; i++)
	{
		v.push_back(i);
	}
	// 普通函数作为模板,只需要传入函数名即可。
	for_each(v.begin(), v.end(), print01);
	cout << endl;
	// 函数对象作为模板
	for_each(v.begin(), v.end(), Printo2());
}

int main() {
	test();
}

1.2:transform 

功能描述:搬运容器到另一个容器中

函数原型:transform(iteratot beg1, iterator end1, iterator beg2,  _func) 

beg1:     源容器开始迭代器

end1:     源容器结束迭代器

beg2:    目标容器开始迭代器

_func:   函数或者函数对象,在搬运过程中对数据做的操作

案例:测试 transform的功能。

// 普通函数,将元素搬运过去并加100,之后这个函数将作为 搬运函数的_func
int transform(int val) {
	return val + 100;
}

// 仿函数
class print02 {
public:
	void operator()(int val) {
		cout << val << " ";
	}
};

void test1() {
	vector<int> v;
	for (int i = 0; i < NUM; i++)
	{
		v.push_back(i);
	}

	for_each(v.begin(), v.end(), print02());
	cout << endl;

	vector<int> v2;
	v2.resize(v.size());  // 目标容器必须先开辟空间
	transform(v.begin(), v.end(), v2.begin(), transform);
	for_each(v2.begin(), v2.end(), print02());
	cout << endl;
}

二:常用查找算法 

学习目标:掌握常用的查找算法。

算法简介:

find    // 查找元素

find_if    // 按条件查找元素

adjacent_find    // 查找相邻重复元素

binary_search    // 二分查找法

count   // 统计元素个数

count_if     //  按条件统计元素个数

2.1:find算法 

功能描述:查找指定元素,找到了就返回指定元素的迭代器,找不到就返回结束迭代器

函数原型:find(iterator beg, iterator end  ,value);

按值查找元素,找到了就返回指定位置的迭代器,找不到就返回结束迭代器

beg  : 开始迭代器

end:   结束迭代器

value :  查找元素

源码分析

案例:使用 find 查找内置数据 

// 常用的查找算法
void test_find() {
	vector<int> v;
	for (int i = 0; i < NUM; i++)
	{
		v.push_back(i);
	}
	vector<int>::iterator it = find(v.begin(), v.end(), 6);
	if (it != v.end())
	{
		cout << "找到了元素";
	}
	else
	{
		cout << "没有找到元素" << endl;
	}
}


// 打印结果
找到了元素

案例:使用find 查找自定义数据类型

自定义数据类型,一定要重载 ==运算法,否则就会出错,这是因为 find源码中直接将迭代器解引用后的数据与需要查找的数据对比,而 Person是自定义数据类型,无法直接对比,所以需要重载  Person== 运算符。 

class Person
{
public:
	Person(string name, int age) {
		this->m_Age = age;
		this->m_Name = name;
	}

	// 重载等号运算符,一元谓词
	bool operator==(const Person& p) {
		if (this->m_Name.compare(p.m_Name) == 0 && this->m_Age == p.m_Age) {
			return true;
		}
		return false;
	}

	int m_Age;
	string m_Name;

private:

};

void test2() {
	Person p1("张飞", 18);
	Person p2("关关羽", 30);
	Person p3("刘备", 48);

	vector<Person> v;
	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);

	//根据 find源码:第三个形参为具体类型
	vector<Person>::iterator it = find(v.begin(), v.end(), p2);
	if (it == v.end())
	{
		cout << "没有找到" << endl;
	}
	else
	{
		cout << "找到了 姓名:" << it->m_Name << "  年龄: " << it->m_Age << endl;
	}

}

 

2.2: find_if  

功能描述:按条件查找元素

函数原型: find_if (iterator beg, iterator end , _pred)

按值查找元素,找到了就返回指定位置的迭代器,找不到就返回结束位置迭代器

beg :  开始迭代器

end:  结束迭代器

_pred  :  函数或者谓词(返回bool 类型的仿函数)

源码

案例:测试内置数据类型和自定义数据类型的 find_if 功能

// 测试自定义数据类型,查找大于4的数据
class Greater4
{
public:
	bool operator()(int val) {
		return val > 4;
	}
};

// 测试自定义数据类型,查找年龄大于20的数据
class Greater20 {
public:
	bool operator()(Person& p) {
		return p.m_Age > 20;
	}
};

void test_find_if() {
	vector<int> v1;
	v1.push_back(3);
	v1.push_back(4);
	v1.push_back(2);
	v1.push_back(1);
	vector<int>::iterator it = find_if(v1.begin(), v1.end(), Greater4());
	if (it == v1.end())
	{
		cout << "没有找到" << endl;
	}
	else {
		cout << "找到了元素" << endl;
	}

	Person p1("aaa", 10);
	Person p2("bbb", 20);
	Person p3("ccc", 40);
	Person p4("dd", 15);

	vector<Person> v;
	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);
	v.push_back(p4);

	vector<Person>::iterator it2 = find_if(v.begin(), v.end(), Greater20());
	if (it2 == v.end())
	{
		cout << "没有找到" << endl;
	}
	else
	{
		cout << "找到了姓名:" << it2->m_Name << "  年龄: " << it2->m_Age << endl;
	}
}

2.3:adjacent_find  

功能描述:查找相邻重复元素

函数原型:adjacent_find(iterator beg, iterator end)

查找相邻重复元素,返回相邻元素的第一个位置迭代器

beg: 开始迭代器

end : 结束迭代器

源码

2.4:binary_search 

功能描述:查找指定元素是否存在

函数原型:bool  binary_search(iterator beg,  iterator end,  value)

查找指定元素,找到返回 true,  否则  false

beg:   开始迭代器

end :  结束迭代器

value :  查找的元素

源码

void test_binary_serach() {
	vector<int> v;
	for (int i = 0; i < NUM; i++)
	{
		v.push_back(i);
	}
	bool ret = binary_search(v.begin(), v.end(), 2);
	if (ret == 0)   // 0 false  1 ture
	{
		cout << "没有找到元素" << endl;
	}
	else
	{
		cout << "找到元素了: " << "2" << endl;
	}
}

2.5:count 

功能描述:统计元素个数

函数原型:count(iterator beg, iterator end ,  value)

统计元素出现次数

beg :  开始迭代器

end :   结束迭代器

value : 统计的元素

源码

案例:对内置数据类和自定义数据类型测试 count功能;

class Person222
{
public:
	Person222(string name, int age) {
		this->m_Age = age;
		this->m_Name = name;
	}

	// 重载等号运算符,一元谓词
	bool operator==(const Person222& p) {
		if (this->m_Age == p.m_Age) {
			return true;
		}
		return false;
	}

	int m_Age;
	string m_Name;
};


void test_count() {
	vector<int> v;
	v.push_back(1);
	v.push_back(1);
	v.push_back(1);
	v.push_back(2);
	v.push_back(1);

	int num = count(v.begin(), v.end(), 1);
	cout << "1的个数为:" << num << endl;

	// 自定义数据类型

	vector<Person222> v1;
	Person222 p1("刘备", 45);
	Person222 p2("关羽", 45);
	Person222 p3("赵云", 20);
	Person222 p4("张飞", 30);
	v1.push_back(p1);
	v1.push_back(p2);
	v1.push_back(p3);
	v1.push_back(p4);

	Person222 p("诸葛亮", 45);
	int num1 = count(v1.begin(), v1.end(), p);
	cout << "和诸葛亮同年龄:" << num1 << endl;
}

2.6:count_if 

功能描述:按条件统计元素个数

函数原型: count_if(iterator beg, iterator end,  _Pred)

按条件统计元素出现次数

beg: 开始迭代器

end :  结束迭代器

_Pred :  谓词

源码

class Greater10 {
public:

	bool operator()(int val) {
		return val > 10;
	}

private:
};

class AgeLess35
{
public:
	bool operator()(const Person& p) {
		return p.m_Age < 35;
	}

private:

};

void test_count_if() {
	vector<int> v;
	v.push_back(8);
	v.push_back(10);
	v.push_back(20);
	v.push_back(9);
	
	int num = count_if(v.begin(), v.end(), Greater10());
	cout << "大于10的个数:" << num << endl;

	vector<Person222> v1;
	Person222 p1("刘备", 35);
	Person222 p2("张飞", 35);
	Person222 p2("赵云", 30);
	v1.push_back(p1);
	v1.push_back(p2);
	int num1 = count_if(v1.begin(), v1.end(), AgeLess35());
	cout << "小于35岁的人数:" << num1 << endl;

}

三:常见排序算法 

3.1 sort算法

功能描述:对容器内元素进行排序

函数原型:sotr(iterator beg,  iterator end,  _Pred)

按值查找元素,找到返回指定位置的迭代器,找不到返回结束位置迭代器

beg:   开始迭代器

end :  结束迭代器

_Pred  : 谓词

源码

// 排序算法
void myPrint(int val) {
	cout << val << " ";
}

void test_sort() {
	vector<int> v;
	v.push_back(20);
	v.push_back(80);
	v.push_back(40);
	v.push_back(30);

	// sort默认从小到排序
	sort(v.begin(), v.end());
	for_each(v.begin(), v.end(), myPrint);
	cout << endl;

	// 从大到小
	sort(v.begin(), v.end(), greater<int>());
	for_each(v.begin(), v.end(), myPrint);
	cout << endl;
}

int main() {
	test_sort();
}

3.2: random_shuffle

功能描述:洗牌,指定范围内的元素随机调整次序

函数原型: random_shuffle(iterator beg,  iterator end)

指定范围内的 元素调整次序

beg:   开始迭代器

end :   结束迭代器

class myPrint222
{
public:
	void operator()(int val) {
		cout << val << "  ";
	}
};

void test_random() {
	// 添加一个随机种子,每次都能产生不同的随机值
	// srand((unsigned int)time(NULL));
	vector<int> V;
	for (int i = 0; i < NUM; i++)
	{
		V.push_back(i);
	}
	for_each(V.begin(), V.end(), myPrint222());
	cout << endl;

	random_shuffle(V.begin(), V.end());
	for_each(V.begin(), V.end(), myPrint222());
}

int main() {
	test_random();
}

3.3  merge 

功能描述:两个容器元素合并,并存储到另一个容器中

函数原型: merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

容器元素合并,并且存储到另一个容器中

beg1:  容器1开始迭代器

beg2:  容器2开始的迭代器

end1: 容器1结束迭代器

end2:容器2结束迭代器

dest: 目标容器开始迭代器

void test_merge() {
	vector<int> v1;
	vector<int> V2;
	for (int i = 0; i < NUM; i++)
	{
		v1.push_back(i);
		V2.push_back(i);
	}
	// 目标容器
	vector<int> vTarget;
	// 目标容器开辟空间
	vTarget.resize(v1.size() + V2.size());
	// 合并
	merge(v1.begin(), v1.end(), V2.begin(), V2.end(), vTarget.begin());
	for_each(vTarget.begin(), vTarget.end(),myPrint222());
}

3.4: reverse 

功能描述:将容器内元素进行反转

函数原型:reverse(iterator beg, iterator end)

反转指定范围内元素

beg:  开始迭代器

end:  结束迭代器

案例:测试reverse功能

void test_reverse() {
	vector<int> v;
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	v.push_back(50);
	cout << "反转前: " << endl;
	for_each(v.begin(), v.end(), myPrint222());

	cout << "反转后: " << endl;
	reverse(v.begin(),v.end());
	for_each(v.begin(), v.end(), myPrint222());
	cout << endl;
}

二叉树的遍历的非递归算法(C++模板实现)
02-11
使用C++模板、类的技术实现了二叉树的中序遍历,在BC3.1已经测试成功
每天学点C++C++实例教程:教程+源码)常用遍历算法.zip
最新发布
06-21
在提供的压缩包文件“常用遍历算法”中,你可以找到这些遍历方法的具体实现和示例,这对于学习和理解C++遍历算法非常有帮助。通过实践这些代码,你可以更好地掌握C++中的遍历技术,并将它们应用到实际项目中。记得...
常用遍历算法
嵌入式
07-05 4800
概述: 算法主要是由头文件<algorithm> <functional> <numeric>组成。 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找遍历操作、复制、修改等等 <numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数 <functional>...
C++提高编程(4.1)—— 常用遍历算法
weixin_45418001的博客
05-28 384
5.1 常用遍历算法 学习目标: 掌握常用遍历算法 算法简介: for_each //遍历容器 transform //搬运容器到另一个容器中 5.1.1 for_each 功能描述: 实现遍历容器 函数原型: for_each(iterator beg, iterator end, _func); // 遍历算法 遍历容器元素 // beg 开始迭代器 // end 结束迭代器 // _func 函数或者函数对象 示例: #include <algorithm&gt
C++ STL 常用遍历算法
weixin_33778544的博客
11-06 166
C++ STL 常用遍历算法   STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现遍历容器的统一方法;也为STL算法提供了统一性奠定了基 础 3) STL算法,通过函数对象实现了自定义数据类型的算法运算;所以说:STL算法也提 供了统一性。                核心思想:其实函数对象本质就是回调函数,...
C++遍历算法
qq_20608169的博客
08-03 85
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <vector> #include <algorithm> using namespace std; //transform 将一个容器的元素 搬运 到另一个容器中 struct MyPlus{ int operator()(int val){ return val + 100; } }; void MyPrint(int val){ c
C++ STL 常用算法详解:遍历查找、排序与更多
3. 常用排序算法 - sort: 对容器进行升序排序。 - stable_sort: 保持相等元素的相对顺序的排序。 - partial_sort: 将容器的一部分元素按升序排序到前面。 - nth_element: 找出容器中第n个元素的位置,使得前n个元素...
排序算法之堆排序算法:用C++语言实现排序算法
05-22
标题"排序算法之堆排序算法:用C++语言实现排序算法",意味着我们将讨论如何用C++编程语言来实现堆排序的过程。C++是面向对象的编程语言,具有丰富的库支持和高效的执行性能,是实现算法的理想选择。 描述"排序...
C++常用stl算法.pdf
11-22
这篇文档主要讨论了C++ STL中的一些常用算法,包括函数对象适配器,如`for_each`、`bind`等。让我们深入探讨这些概念。 首先,函数对象在C++中是一个重要的概念,它是一个类,通过重载`()`操作符使得类的对象能够像...
C++ STL--数据结构与算法实现(余文溪)示例程序代码.rar
11-10
3. 算法(Algorithms):STL提供了一系列通用的算法,如排序(`sort`)、查找(`find`)、合并(`merge`)、删除(`erase`)等,这些算法可以应用于任何支持迭代器的容器。 4. 函数对象(Function Objects)或谓之...
二叉树各种遍历算法C++实现
05-19
包括了二叉树的各种递归与非递归的遍历算法 还可对二叉树所有结点求和
1. C++常用遍历方法
baidu_40686549的博客
12-08 4798
1. C++常用遍历方法 遍历:指的是集合中每个元素只访问一次。常见的方法有一下六种。 下面以字符串遍历与数组(向量)遍历为例 【字符串遍历】 string str("XDU"); 传统Cfor写法 for(size_t i = 0; i < str.size(); i++){ cout << str[i] << endl; } size_t: ​ 一个基本的无符号整型的C/C++类型,它是sizeof操作返回的结果,该类型的大小可选择。因此,它可以存储在理论上可
C++常见遍历算法
m0_63932570的博客
03-29 1164
在结束完前面的容器学习后,紧随其后的就是C++常见算法啦,学完C++这几种常见算法后,会发现我们在学数据结构时用C语言写的算法相比,C++这几种算法真的节省了不少代码(对于博主这种喜欢走捷径的人来说无疑是一件好事)。当然这里不是说数据结构里的那些算法就没有用,那是我们C++算法的底层本质,还是有必要去好好深究的。下面就让我们来看看这第一种算法——遍历算法吧 1.for_each 用法代码: 2.transform: 用法代码: 3.find:用法代码: 自定义类型的查找: .
C++常用遍历算法
guicaifjz的博客
07-08 221
C++常用遍历算法for_eachtransform 学习目标: 掌握常用的变量算法 算法简介: for_each//遍历算法 transform//搬运容器到另一个容器 for_each #include <iostream> using namespace std; //常用遍历算法 #include <vector> #include<algorithm> //普通函数 void print01(int val) { cout << val &
C++常用遍历算法
debug...
08-05 309
C++常用遍历算法,for_each、transform
C++中的常用遍历算法
Major_S的博客
02-08 505
常用遍历算法常用遍历算法常用遍历算法 77.常用遍历算法-for_each 78.常用遍历算法-transform 79.常用遍历算法-find 80.常用查找算法-find_if 81.常用查找算法-adjacent_find 82.常用查找算法-binary_search 83.常用查找算法-count 84.常用查找算法-count_if 85.常用排序算法-sort 86.常用排序算法-random_shuffle 87.常用排序算法-merge 88.常用排序算法-reverse
C++ STL(十二):常用遍历算法(for_each、transform)
NewsomTech
03-01 1387
文章目录0 STL算法1 常用遍历算法简介【for_each、transform】2 for_each【遍历容器元素及统一逻辑处理】3 transform【将源容器的元素全部拷贝至目标容器】 0 STL算法 STL算法主要由<algorithm> <functional> <numeric>等头文件组成。 <algorithm>:包括遍历查找、排序、比较、交换、复制、修改等操作的函数模板。 <functional>:包括函数对象/仿函数相关的类
C++基础(15)——STL常用算法(遍历查找)
weixin_56646002的博客
06-21 507
本文介绍了C++STL常用遍历查找算法
C++ 常用算法遍历
weixin_43903378的博客
01-29 233
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <algorithm> #include <vector> #include <functional> using namespace std; /* 遍历算法 遍历容器元素 @param beg 开始迭代器 @param en...
写文章

热门文章

  • gradle 插件版本、gradle版本 和buildToolsVersion之间的对应关系 31253
  • Okhttp使用 之: post请求类型 (详解 RequestBody FormBody MultipartBody)(图片上传) 23928
  • C++:C++编译过程:看完还不懂C++编译过程来捶我 15794
  • C++:C++全局变量:看完还不懂全局变量来捶我 15077
  • gradle之 ----将gradle缓存从默认C盘移动到D盘 13305

分类专栏

  • KANZI 付费 3篇
  • 计算机 9篇
  • 算法和数据结构 8篇
  • 有线/无线/网络协议 2篇
  • Android
  • Android基础、进阶、核心技术 87篇
  • Android Gradle 14篇
  • Android HMI 12篇
  • Android Framework系列 5篇
  • Android 性能优化 3篇
  • 设计模式和软件架构 12篇
  • Android随笔 84篇
  • android面试题 3篇
  • JAVA
  • JavaScript 2篇
  • java反射 11篇
  • Java& Android 并发编程 8篇
  • Jvm 17篇
  • Java集合系列 4篇
  • Python 17篇
  • Python自动化测试
  • Python数据可视化 4篇
  • C++ 25篇
  • C++ 书籍 21篇
  • CSDN新星计划
  • C++ 标准库学习 10篇
  • C++精华 50篇
  • C++11 1篇
  • C++关键字 5篇
  • C++进阶(常见错误) 4篇
  • C++基础点滴 31篇
  • C++开源库 2篇
  • koltin
  • 软件考试 15篇
  • Linux 3篇

最新评论

  • C++ :多线程入门到精通

    eutopia_dream: 大佬啥时候更新

  • C++:指针:看完还不会指针,来捶我

    初恋 永远的神: 脸伸过来

  • C++:函数:回调函数:还不懂回调函数来捶我

    FishAnd_Yu: 因为有callback的引用

  • C++:函数:回调函数:还不懂回调函数来捶我

    obsession27: 三方库为什么会调用回调函数

  • C++:STL:常用算法:遍历,查找,排序算法

    陈逸轩*^_^*: 不错表情包表情包表情包表情包

大家在看

  • Springboot计算机毕业设计宠物医院管理系统yneox 347
  • 【贪心算法】(第十三篇)
  • 如何训练 RAG 模型 3
  • SSM框架之分层解耦 407
  • 使用SQL在PostGIS中创建各种空间数据 483

最新文章

  • JavaScript:从入门到精通:js函数
  • JavaScript:从入门到精通:初始JS
  • Python:Python编程:Python数据库
2023年96篇
2022年268篇
2021年20篇
2020年91篇
2016年7篇
2015年4篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家西山区玻璃钢雕塑的设计黄石定做玻璃钢雕塑潍坊商场美陈装饰昆明景区玻璃钢雕塑生产厂家华龙玻璃钢雕塑厂家蒙自市玻璃钢雕塑设计供应北京定制玻璃钢雕塑生产厂家洛阳玻璃钢雕塑制造南宁动物玻璃钢雕塑价位绍兴玻璃钢花盆哪家好黑龙江水果玻璃钢雕塑定制山东季节性商场美陈批发地方描玻璃钢卡通雕塑五华区玻璃钢雕塑加工厂家南京商场美陈价格泉州企业玻璃钢雕塑玻璃钢花盆装饰简笔画湖北玻璃钢雕塑模型台州玻璃钢仿铜雕塑宿州人物玻璃钢雕塑定做价格知名玻璃钢雕塑定制厂家吉林佛像玻璃钢雕塑供应商大连惠州玻璃钢雕塑安康广场玻璃钢雕塑玻璃钢运动雕塑哪里卖黄骅玻璃钢气球雕塑浙江景区玻璃钢雕塑定做价格玻璃钢动物雕塑价格范围乌海玻璃钢雕塑定制价格温州大型玻璃钢雕塑供应商香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化