STL主要分为分为三类:
1.algorithm(算法 )——对数据进行处理(解决问题) 步骤的有限集合
3.Iterator (迭代器)——可遍历STL容器内全部或部分元素”的对象
1.容器和算法通过迭代器可以进行无缝地连接。在STL中几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
2.STL 最早源于惠普实验室,早于C++存在,但是C++引入STL概念后,STL就成为C++的一部分,因为它被内建在你的编译器之内,不需要另行安装。
3.STL被组织为下面的13个头文 件:、
、 、 、 、 、
代码示例:
// demo 15-22 #includeusing namespace std; #include #include class student { public: student(int age, const char* name) { this->age = age; strncpy_s(this->name, name, 64); } student(const student& s) { this->age = s.age; strncpy_s(this->name, s.name, 64); cout << "拷贝构造函数被调用!" << endl; } public: int age; char name[64]; }; //容器中直接存放对象,会发生拷贝构造 void demo2() { vector v1; student s1(18, "李小美"); student s2(19, "王大帅"); v1.push_back(s1); v1.push_back(s2); cout << "v1 的学生的个数:" << v1.size() << endl; //方式1,下标访问 //for(unsigned int i=0; i ::iterator it = v1.begin(); for (; it != v1.end(); it++) { cout << (*it).name << ": " << (*it).age << endl; } } //容器中存放指针 void demo3() { vector v1; student s1(18, "李小美"); student s2(19, "王大帅"); v1.push_back(&s1); v1.push_back(&s2); cout << "v1 的学生的个数:" << v1.size() << endl; //方式1,下标访问 //for(unsigned int i=0; i ::iterator it = v1.begin(); for (; it != v1.end(); it++) { cout << (**it).name << ": " << (**it).age << endl; } } void demo1() { //第一部分 容器 vector v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); v1.push_back(4); v1.push_back(3); cout << "v1 的元素个数:" << v1.size() << endl; cout << "v1中保存的元素:" << endl; //方式1,下标访问 //for(unsigned int i=0; i ::iterator it = v1.begin(); for (; it != v1.end(); it++) { cout << *it << endl; } //第三部分 算法 int ncount = count(v1.begin(), v1.end(), 90); cout << "v1 中数值为 90 的元素个数:" << ncount << endl; } int main() { demo3(); system("pause"); return 0; }
运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)