STL初级
?
產生原因
C++的目的是復用性的提升,為了避免開發者重復簡單工作,誕生了標準模板庫(STL)
一、STL實現
利用模板技術
容器與算法間由迭代器銜接
二、STL六大組件
分別是:容器、算法、迭代器、仿函數、適配器(配接器)、空間配置器
三、STL舉例實踐
容器:?vector
算法:?for_each
迭代器:?vector<int>::iterator
1.存放int數據
#include <vector> #include <algorithm>void MyPrint(int val) {cout << val << endl; }void test01() {//創建int類型的vector容器對象vector<int> v;//向容器中尾插放數據v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);//迭代器是用來遍歷容器中的元素//v.begin()返回迭代器,這個迭代器指向容器中第一個數據//v.end()返回迭代器,這個迭代器指向容器元素的最后一個元素的下一個位置//vector<int>::iterator 拿到vector<int>這種容器的迭代器類型//*it相當于解引用vector<int>::iterator pBegin = v.begin();vector<int>::iterator pEnd = v.end();//while遍歷方式:while (pBegin != pEnd) {cout << *pBegin << endl;pBegin++;}//for遍歷方式:for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {cout << *it << endl;}cout << endl;//算法遍歷方式://使用STL提供標準遍歷算法 ?頭文件 algorithmfor_each(v.begin(), v.end(), MyPrint);//Myprint函數名 }int main() {test01();system("pause");return 0; }
2.存放自定義數據
#include <vector>
#include <string>
//class自定義數據類型
class Person {
public:
?? ?Person(string name, int age) {
?? ??? ?mName = name;
?? ??? ?mAge = age;
?? ?}
public:
?? ?string mName;
?? ?int mAge;
};
void test01() {
?? ?vector<Person> v;
?? ?Person p1("aaa", 10);
?? ?Person p2("bbb", 20);
?? ?Person p3("ccc", 30);
?? ?Person p4("ddd", 40);
?? ?Person p5("eee", 50);
?? ?v.push_back(p1);
?? ?v.push_back(p2);
?? ?v.push_back(p3);
?? ?v.push_back(p4);
?? ?v.push_back(p5);
?? ?for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
?? ??? ?cout << "Name:" << (*it).mName << " Age:" << (*it).mAge << endl;
?? ?}
}
//放對象指針
void test02() {
?? ?vector<Person*> v;
?? ?//創建數據
?? ?Person p1("aaa", 10);
?? ?Person p2("bbb", 20);
?? ?Person p3("ccc", 30);
?? ?Person p4("ddd", 40);
?? ?Person p5("eee", 50);
? ? //存放地址
? ? v.push_back(&p1);
?? ?v.push_back(&p2);
?? ?v.push_back(&p3);
?? ?v.push_back(&p4);
?? ?v.push_back(&p5);
?? ?for (vector<Person*>::iterator it = v.begin(); it != v.end(); it++) {
?? ??? ?Person * p = (*it);
?? ??? ?cout << "Name:" << p->mName << " Age:" << (*it)->mAge << endl;
?? ?}
}
int main() {
?? ?test01();
? ??
?? ?test02();
?? ?system("pause");
?? ?return 0;
}
?
總結
了解STL的基本知識,運作原理
總結
- 上一篇: 一文整理深度学习【深度学习win10的D
- 下一篇: STL容器汇总(一)