0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++之STL算法(1)

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2023-07-18 14:30 次阅读

STL容器算法主要有:、、组成

algorithm主要有遍历、比较、交换、查找、拷贝、修改等;

numeric体积很小,主要包括几个序列上的进行数学运算的函数模板;

functional定义了一些模板类,用于声明仿函数;

1.遍历容器for_each

for_each()函数用于完成容器遍历,函数参数如下:

for_each(_InIt _First, _InIt _Last, _Fn _Func)
形参:_First、_Last --容器的起始和结束迭代器
     _Func -->仿函数(回调函数),处理要输出的信息

1.1 vector容器遍历

自定义数据格式:

class Person
{
	friend class mycompare;
	friend class Myprint;//友元类
	friend void Print(const Person& p);//友元函数
public:
	Person() {}
	Person(string name, int age) :name(name), age(age) {

	}
	Person(const Person& p)
	{
		name = p.name;
		age = p.age;
	}
	bool operator< (const Person& p)const
	{
		if (this- >age == p.age)
		{
			return p.name < p.name;
		}
		return this- >age > p.age;
	}
private:
	string name;
	int age;
};
//创建函数对象
class Myprint
{
public:
	void operator()(const Person& p)
	{
		cout < < "姓名:" < < p.name < < "t年龄:" < < p.age < < endl;
	}
	void operator()(const pair< Person, int >& p)
	{
		cout < < "姓名:" < < (p.first).name < < "t年龄:" < < (p.first).age < < "t成绩:" < < p.second < < endl;
	}
};
void vector_test()
{
	cout < < "tvector容器示例:" < < endl;
	//创建vector容器--- >单端数组
	vector< Person >vtr;
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小林", 18));
	vtr.push_back(Person("小李", 18));
	vtr.push_back(Person("小刘", 18));
	cout < < "提供一个函数示例:" < < endl;
	for_each(vtr.begin(), vtr.end(), Print);
	cout < < "提供一个仿函数示例:" < < endl;
	for_each(vtr.begin(), vtr.end(), Myprint());
}

1.2 list容器遍历

void list_test()
{
	//创建一个list容器-->双向链表
	cout < < "tlist容器示例:" < < endl;
	list< Person > t;
	t.push_back(Person("小王", 18));//尾插
	t.push_front(Person("小林", 18));//头插
	t.push_back(Person("小李", 18));
	t.push_back(Person("小刘", 18));
	cout < < "提供一个仿函数示例:" < < endl;
	for_each(t.begin(), t.end(), Myprint());
}

1.3 set容器遍历

void set_test()
{
	cout < < "tset/multiset关联式容器:" < < endl;
	multiset< Person >mt;//该容器会自动排序
	mt.insert(Person("小王", 18));
	mt.insert(Person("小林", 18));
	mt.insert(Person("小李", 17));
	mt.insert(Person("小刘", 18));
	mt.insert(Person("小李", 22));
	for_each(mt.begin(), mt.end(), Myprint());

	cout < < "tset/multiset关联式容器(仿函数示例):" < < endl;
	multiset< Person, mycompare >mt2;
	mt2.insert(Person("小王", 18));
	mt2.insert(Person("小林", 18));
	mt2.insert(Person("小李", 17));
	mt2.insert(Person("小刘", 18));
	mt2.insert(Person("小李", 22));
	for_each(mt.begin(), mt.end(), Myprint());
}

1.4 map容器遍历

void map_test()
{
	cout < < "tmap关联式容器示例:" < < endl;
	multimap< Person, int >mp;
	mp.insert(make_pair(Person("小王", 18), 88));
	mp.insert(pair< Person,int >(Person("小林", 18),99));
	mp.insert(pair< Person, int >(Person("小李", 17), 95));
	mp.insert(pair< Person, int >(Person("小刘", 18), 95));
	mp.insert(pair< Person, int >(Person("小李", 22), 90));
	for_each(mp.begin(), mp.end(), Myprint());
}

1.5 整体运行效果

int main()
{
	vector_test();//vector容器
	list_test();//list容器
	set_test();//set容器
	map_test();//map容器
	system("pause");
}
wKgZomS2LC2AfcZSAAZalV2pm3Q837.png

2.转移元素transform

transform函数:
	transform(const _InIt _First, const _InIt _Last, _OutIt _Dest, _Fn _Func)
	将一个函数中的元素拷贝到另一个容器中,
	_First、_Last --要转移的容器的起始迭代器和结束迭代器
	_Dest --目标容器的起始迭代器
	_Func --仿函数,支持一元运算,可以对当前值进行+ - *  等各种运算

使用示例:

#include < iostream >
using namespace std;
#include < algorithm >
#include < vector >
class myprint
{
public:
	void operator()(int val)
	{
		cout < < val < < " ";
	}
};
class myfunc
{
public:
	int operator()(int val1)
	{
		return val1;
	}
};

void test()
{
	vector< int >t1;
	for (int i = 0; i < 10; i++)
	{
		int temp = rand() % 101;
		t1.push_back(temp);
	}
	cout < < "原容器数据:" < < endl;
	for_each(t1.begin(), t1.end(), myprint());
	cout < < endl;
	vector< int >target;
	target.resize(t1.size());//设置target容器大小
	transform(t1.begin(), t1.end(), target.begin(), myfunc());
	cout < < "转移后的容器内容:" < < endl;
	for_each(target.begin(), target.end(), myprint());
	cout < < endl;
}
int main()
{
	test();
	system("pause");
}
wKgaomS2LMOALDr6AAQ4-ewgtdg545.png

3.成员查找


STL中支持多种查找方式。

  • find() --查找指定元素
  • find_if() --按条件查找
  • adjacend_find() --查找相邻元素
  • binary_search() --二分法查找
  • count() --统计元素个数
  • count_if() --按条件统计

3.1 find查找

find函数:
find(_InIt _First, const _InIt _Last, const _Ty& _Val);
   _First、_Last  --查找的起始和结束位置
   _Val  --要查找的内容
返回值:成功返回查找到位置的迭代器
        失败返回end();
#include < iostream >
using namespace std;
#include < algorithm >
#include < vector >
#include < list >
#include < stack >
#include < map >
class Person
{
	friend class map_compare;
	friend class print;
	friend ostream& operator< <(ostream& cout, const Person& p);
public:
	Person(){}
	Person(string name, int age):name(name),age(age) {
	}
	bool operator==(const Person& p)const
	{
		if (name == p.name && age == p.age)return true;
		return false;
	}
	bool operator< (const Person& p)const
	{
		if (p.age == age)
		{
			return name < p.name;
		}
		return age > p.age;
	}
private:
	string name;
	int age;
};
ostream& operator< <(ostream& cout, const Person& p)
{
	cout < < "姓名:" < < p.name < < "t年龄:" < < p.age ;
	return cout;
}
class print
{
public:
	void operator()(const Person& p) {
		cout < < "姓名:" < < p.name < < "t年龄:" < < p.age < < endl;
	}
};
void vec_test()
{
	cout < < "tvector容器查找示例:" < < endl;
	vector< Person >vtr;
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小刘", 17));
	vtr.push_back(Person("小李", 22));
	vtr.push_back(Person("小林", 19));
	for_each(vtr.begin(),vtr.end(),print());
	vector< Person >::iterator ret=find(vtr.begin(), vtr.end(), Person("小刘", 17));
	if (ret == vtr.end())
	{
		cout < < "未找到该成员" < < endl;
	}
	else
	{
		cout < < "查找成功: " < < endl;
		cout < < *ret < < endl;;
	}
}
void list_test()
{
	cout < < "nlist容器使用示例:" < < endl;
	list< Person >t;
	t.push_back(Person("小王", 18));
	t.push_front(Person("小刘", 17));
	t.insert(t.end(),Person("小王", 18));
	t.insert(t.begin(), Person("小王", 18));
	t.push_back(Person("小李", 22));
	t.push_back(Person("小林", 19));
	for_each(t.begin(), t.end(), print());
	cout < < "查找成员Person("小王", 18)" < < endl;
	int count = 0;
	for (list< Person >::iterator ptr = t.begin();ptr != t.end(); )
	{
		ptr =find(ptr, t.end(), Person("小王", 18));
		if (ptr != t.end())
		{
			cout < < "查找到第 " < < ++count < < "成员:";;
			cout < < *ptr < < endl;
			ptr++;
		}
	}
}
//栈容器
void stack_test()
{
	cout < < "stack容器查找示例:" < < endl;
	//stack栈:先进后出
	stack< Person >s;
	s.push(Person("小王", 18));
	s.push(Person("小刘", 17));
	s.push(Person("小李", 22));
	s.push(Person("小林", 19));
	s.push(Person("小王", 18));
	cout < < "元素个数:" < < s.size() < < endl;
	while (!s.empty())//判断容器是否为空
	{
		if (s.top() == Person("小王", 18))
		{
			cout < < "查找成功" < < endl;
		}
		s.pop();//出栈
	}
}
class map_print
{
public:
	void operator()(const pair< Person, int >& p)
	{
		cout < < p.first < < "t成绩:" < < p.second < < endl;
	}
};
class map_compare
{
public:
	bool operator()(const pair< Person, int >& p1, const pair< Person, int >& p2)
	{
		if (p1.first == p2.first && p1.second == p2.second)return true;
		return false;
	}

};
//map容器
void multimap_test()
{
	cout < < "nmap容器查找示例:" < < endl;
	multimap< Person, int >mp;
	//插入数据
	mp.insert(pair< Person, int >(Person("小王", 18), 88));
	mp.insert(make_pair(Person("小刘", 17), 99));
	mp.insert(multimap< Person, int >::value_type(Person("小王", 18), 100));
	mp.insert(make_pair(Person("小李", 19), 95));
	for_each(mp.begin(), mp.end(), map_print());
	cout< < "查找成员Person("小王", 18)" < < endl;
	multimap< Person, int >::iterator ret = mp.find(Person("小王", 18));//查找数据
	map_print p;
	//multimap容器由于数据都是有序的,所以相同的数据都是连在一起的
	for (int i = 0; i < mp.count(Person("小王", 18)); i++, ret++)
	{
		if (ret != mp.end())
		{
			p(*ret);
		}
	}
}
class stu
{
public:
	stu() {}
	stu(string name, int age) :name(name), age(age) {
	}
	bool operator==(const stu& p)const
	{
		if (name == p.name && age == p.age)return true;
		return false;
	}
	bool operator< (const stu& p)const
	{
		if (p.age == age)
		{
			return name < p.name;
		}
		return age > p.age;
	}
	string name;
	int age;
};
int main()
{
	vec_test();
	list_test();
	stack_test();
	multimap_test();
	system("pause");
}
#endif
wKgaomS2LUGAFDFpAAXCPr3eYyg403.png

3.2 find_if条件查找

find_if(_InIt _First, const _InIt _Last, _Pr _Pred)
形参:_First、_Last --查找的起始和结束迭代器
	 _Pred  --仿函数,查找条件
返回值:成功返回查找到的成员的位置迭代器
        失败返回endl
#include < iostream >
#include < vector >
#include < map >
#include < algorithm >
#include < functional >
using namespace std;
class Person
{
	friend std::ostream& operator< <(std::ostream& cout, Person& p);
	friend class compare;
	friend class print;
public:
	Person() {}
	Person(std::string name, int age) :name(name), age(age) {
	}
	bool operator >(const Person& p)const
	{
		return age > p.age;
	}
private:
	std::string name;
	int age;
};
std::ostream& operator< <(std::ostream& cout, Person& p)
{
	cout < < "姓名:" < < p.name < < "t年龄" < < p.age;
	return cout;
}
class compare
{
public:
	bool operator()(const Person& p)
	{
		return p.age > 18;
	}
	bool operator()(const Person& p1, const Person& p2)const
	{
		if (p1.age == p2.age)return p1.name < p2.name;
		return p1.age < p2.age;
	}

};
class print
{
public:
	void operator()(pair< Person, int >p)
	{
		cout < < p.first < < "t成绩" < < p.second < < endl;
	}

};
void vector_test()
{
	cout < < "vector容器条件查找示例:" < < endl;
	std::vector< Person > vtr;
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小刘", 17));
	vtr.push_back(Person("小李", 22));
	vtr.push_back(Person("小林", 19));
	std::cout < < "查找年龄大于18的成员:" < < std::endl;
	std::vector< Person >::iterator ret=find_if(vtr.begin(), vtr.end(), compare());
	if (ret != vtr.end())
	{
		std::cout < < "查找成功" < < std::endl;
		std::cout < < *ret < < std::endl;
	}
}
void multimap_test()
{
	cout < < "nmultimap条件查找示例:" < < endl;
	multimap< Person, int, compare >p;
	p.insert(make_pair(Person("小王", 18), 88));
	p.insert(make_pair(Person("小刘", 17), 99));
	p.insert(make_pair(Person("小刘", 17), 77));
	p.insert(make_pair(Person("小林", 17), 77));
	p.insert(make_pair(Person("小李", 22), 100));
	for_each(p.begin(), p.end(), print());
	cout < < "查找年龄Person("小刘", 17)" < < endl;
	pair< multimap< Person,int >::iterator,multimap< Person,int >::iterator> ret=p.equal_range(Person("小刘", 17));
	for (; ret.first != ret.second;ret.first++)
	{
		print temp;
		temp(*(ret.first));
	}
}
int main()
{
	vector_test();
	multimap_test();
	system("pause");
}
wKgaomS2LjOALxFYAATqzOaazhc122.png

3.3 find_if条件查找

adjacent_find() -查找相邻重复元素,查找成功返回相邻重复元素的首位置的迭代器,失败返回end
iterator adjacent_find(const _FwdIt _First, _FwdIt _Last, _Pr _Pred)
形参:_First、_Last --要查找的起始、结束区间迭代器
      _Pred --查找条件
返回值:成功返回相邻重复元素的首位置的迭代器
        失败返回end

示例:

#include < iostream >
#include < algorithm >
#include < vector >
#include < map >
using namespace std;
class Person
{
	friend ostream& operator< <(ostream& cout, Person& p);
public:
	Person(string name, int age) :name(name), age(age) {

	}
	bool operator==(Person& p)
	{
		if (p.age == this- >age && p.name == name)return true;
		return false;
	}
	string name;
	int age;
};
ostream& operator< <(ostream& cout, Person& p)
{
	cout < < "姓名:" < < p.name < < "t年龄:" < < p.age;
	return cout;
}
class compare
{
public:
	bool operator()(const Person& p1, const Person& p2)const
	{
		if (p1.name == p2.name && p1.age == p2.age)return true;
		return false;
	}
};


void vector_test()
{
	cout < < "tvector容器使用示例!" < < endl;
	vector< Person >vtr;
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小刘", 18));
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小李", 18));
	auto ret=adjacent_find(vtr.begin(), vtr.end(), compare());
	if (ret != vtr.end())
	{
		cout < < "查找成功:";
		cout < < *ret < < endl;
	}
}
class print
{
public:
	void operator()( pair< Person, int > p)const
	{
		cout < < p.first < < "t成绩:" < < p.second < < endl;
	}
};
class mapcompare
{
public:
	bool operator()(const Person& p1, const Person& p2)const
	{
		if ( p1.age == p2.age)return p1.name< p2.name;
		return p1.age< p2.age;
	}
	bool operator()(const Person& p)
	{
		return p.age > 17;
	}

};
void mulitmap_test()
{
	cout < < "ntmultimap使用示例!" < < endl;
	multimap< Person, int, mapcompare >mp;
	mp.insert(make_pair(Person("小王", 16), 77));
	mp.insert(make_pair(Person("小刘", 18), 88));
	mp.insert(make_pair(Person("小刘", 18), 88));
	mp.insert(make_pair(Person("小李", 19), 99));
	cout < < "元素个数:" < < mp.size() < < endl;
	for_each(mp.begin(), mp.end(), print());
	auto begin=mp.lower_bound(Person("小刘", 18));
	auto end = mp.upper_bound(Person("小刘", 18));
	cout < < "查找相邻重复内容Person("小刘", 18):" < < endl;
	for (; begin != end; begin++)
	{
		print p;
		p(*begin);
	}
}

int main()
{
	vector_test();
	mulitmap_test();
	system("pause");
}

wKgZomS2LwSAQSh9AAWEAOiUcQk947.png

3.4 二分法查找binary_search

二分法查找元素:
	bool binary_search(val); -->查找成功返回true,失败返回false,保证数据顺序为从小到大
	binary_search(_FwdIt _First, _FwdIt _Last, const _Ty& _Val, _Pr _Pred)
	形参:_First、_Last --起始和结束迭代器
	      _Val --要查找的内容
		  _Pred  --数据顺序方式(默认从小到大)
注意:调用该函数必须保证有序,否结果可能不准确
#include < iostream >
#include < vector >
#include < algorithm >
#include < functional >
using namespace std;
class Print
{
public:
	void operator()(int v1)
	{
		cout < < v1 < < " ";

	}

};
void test()
{
	vector< int >vtr;
	vtr.push_back(10);
	vtr.push_back(3);
	vtr.push_back(6);
	vtr.push_back(2);
	vtr.push_back(5);
	cout < < "从小到大排序:" < < endl;
	sort(vtr.begin(), vtr.end(), less< int >());
	for_each(vtr.begin(), vtr.end(), Print());
	cout < < endl;
	auto ret=binary_search(vtr.begin(), vtr.end(), 5);
	if (ret)
	{
		cout < < "查找5:查找成功" < < endl;
	}

}
int main()
{
	test();
	system("pause");
}
wKgZomS2MAuAaH3uAANuZISEEjA633.png

3.5 查找个数count

查找指定成员个数:
	count(const _InIt _First, const _InIt _Last, const _Ty& _Val)-->返回查找到的个数
	形参:_First、_Last --起始和结束迭代器
	      _Val --要查找的内容
	返回值:返回查找到的个数

示例:

#include < iostream >
using namespace std;
#include < vector >
#include < algorithm >
class Person
{
public:
	Person() {}
	Person(string name, int age) :name(name), age(age) {

	}
	bool operator==(const Person p)const
	{
		if (age == p.age && name == p.name)return true;
		return false;
	}
	bool operator==(const int age)const
	{
		if (this->age == age)return true;
		return false;
	}
	string name;
	int age;
};
class compare
{
public:
	bool operator()(const Person p1, const Person p2)const
	{
		if (p1.age == p2.age && p1.name == p2.name)return true;
		return false;
	}
};
void test()
{
	vector< Person > vtr;
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小刘", 22));
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小林", 17));
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小蒋", 20));
	auto cnt=count(vtr.begin(), vtr.end(), Person("小王", 18));
	cout < < "符合要求的成员个数:" < < cnt < < endl;
	cnt = count(vtr.begin(), vtr.end(), 22);
	cout < < "年龄等于22的个数:" < < cnt < < endl;

}
int main()
{
	test();
	system("pause");
}
wKgaomS2MK-ADoVZAARGnxdwobM467.png

3.5 查找个数count

按条件查找:
	count_if(_InIt _First, _InIt _Last, _Pr _Pred);--返回查找到个数
	形参:_First、_Last --起始和结束迭代器
	      _Pred  --查找条件
	返回值:返回查找到的元素位置的迭代器
	        失败返回end()
#include < iostream >
#include < algorithm >
#include < vector >
using namespace std;
class Person
{
public:
	Person() {}
	Person(string name, int age) :name(name), age(age) {

	}
	string name;
	int age;
};
class Compare
{
public:
	bool operator()(const Person& p)const
	{
		if (p.name == "小王" && p.age > 18)return true;
		return false;
	}

};
void test()
{
	vector< Person >vtr;
	vtr.push_back(Person("小王", 18));
	vtr.push_back(Person("小刘", 22));
	vtr.push_back(Person("小王", 19));
	vtr.push_back(Person("小林", 17));
	vtr.push_back(Person("小王", 22));
	vtr.push_back(Person("小蒋", 20));
	auto ret=count_if(vtr.begin(), vtr.end(), Compare());
	cout < < "姓名为小王,年龄大于18的个数:" < < ret< ;>
wKgZomS2MUyAT0dCAAQOOcbjHy0770.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90759
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21883
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72900
  • STL
    STL
    +关注

    关注

    0

    文章

    85

    浏览量

    18213
收藏 人收藏

    评论

    相关推荐

    C++STL算法(二)

    C++STL算法(二)
    的头像 发表于 07-18 14:49 653次阅读
    <b class='flag-5'>C++</b>之<b class='flag-5'>STL</b><b class='flag-5'>算法</b>(二)

    c++STL算法(三)

    c++STL算法(三)
    的头像 发表于 07-18 15:00 872次阅读
    <b class='flag-5'>c++</b>之<b class='flag-5'>STL</b><b class='flag-5'>算法</b>(三)

    C++STL算法基础集合类算法,轻松上手C++STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 11:32:07

    C++STL算法基础排列组合类算法,轻松上手C++STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 11:36:54

    C++零基础教程STL容器篇queue容器,轻松上手C++STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 11:41:21

    C++零基础教程之STL关系类算法,轻松上手C++ STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 12:20:42

    C++零基础教程之STL排列组合算法,轻松上手C++ STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 12:24:24

    C++零基础教程之STL集合类算法,轻松上手C++ STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 12:24:57

    c++算法库的移植问题

    目前有一个算法库 用的c++  用ccs在dsp上可以调试 现在希望把库放在8168的dsp上  需要将c++转换成c 有个工具 mmCC C++-
    发表于 06-21 13:14

    C++ STL的概念及举例

      本篇文章是作者本人使用STL 后的一些看法, 对於想要靠此文章学习STL, 是不可能的. 建议叁后面介绍的一些书入门.   STL的概念   在STL 中, 大至上分三个主要的
    发表于 08-30 11:39 1308次阅读

    STL算法在GIS中的应用

    使用STL 算法实现GIS 算法可以保证它的简洁和高效该文结合C++代码实例抽象出了地理算子的概念应用在GIS 算法当中通过定制适配器来消除
    发表于 06-28 16:55 33次下载

    STL的概述

    C++ STL 是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法,关于 STL 呢,
    的头像 发表于 01-20 17:08 898次阅读
    <b class='flag-5'>STL</b>的概述

    C++STL库中的容器

    前面跟大家介绍过STL库,STL主要是由6大部分组成,其中第一个提到的就是容器,容器在介绍STL中小哥有简单的跟大家介绍过,今天稍微再详细介绍一下
    的头像 发表于 02-21 10:55 687次阅读
    <b class='flag-5'>C++</b>之<b class='flag-5'>STL</b>库中的容器

    C++ STL基本概念是什么

    STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。
    的头像 发表于 02-27 15:56 1063次阅读
    <b class='flag-5'>C++</b> <b class='flag-5'>STL</b>基本概念是什么

    STL内容介绍

    1 什么是STLSTL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(
    的头像 发表于 11-13 11:32 331次阅读
    <b class='flag-5'>STL</b>内容介绍