标签:
step1:
#include <iostream> #include <vector> #include <string> using namespace std; main() { vector<string> SS; SS.push_back("The number is 10"); SS.push_back("The number is 20"); SS.push_back("The number is 30"); cout << "Loop by index:" << endl; int ii; for(ii=0; ii < SS.size(); ii++) { cout << SS[ii] << endl; } cout << endl << "Constant Iterator:" << endl; vector<string>::const_iterator cii; for(cii=SS.begin(); cii!=SS.end(); cii++) { cout << *cii << endl; } cout << endl << "Reverse Iterator:" << endl; vector<string>::reverse_iterator rii; for(rii=SS.rbegin(); rii!=SS.rend(); ++rii) { cout << *rii << endl; } cout << endl << "Sample Output:" << endl; cout << SS.size() << endl; cout << SS[2] << endl; swap(SS[0], SS[2]); cout << SS[2] << endl; }
step2:
Compile: g++ exampleVector.cpp Run: ./a.out Output: Loop by index: The number is 10 The number is 20 The number is 30 Constant Iterator: The number is 10 The number is 20 The number is 30 Reverse Iterator: The number is 30 The number is 20 The number is 10 Sample Output: 3 The number is 30 The number is 10
此例子主要说明vector的使用。
编程语言方面:vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据
例子2:(作为2纬数组使用)
step1:
#include <iostream> #include <vector> using namespace std; main() { // Declare size of two dimensional array and initialize. vector< vector<int> > vI2Matrix(3, vector<int>(2,0)); vI2Matrix[0][0] = 0; vI2Matrix[0][1] = 1; vI2Matrix[1][0] = 10; vI2Matrix[1][1] = 11; vI2Matrix[2][0] = 20; vI2Matrix[2][1] = 21; cout << "Loop by index:" << endl; int ii, jj; for(ii=0; ii < 3; ii++) { for(jj=0; jj < 2; jj++) { cout << vI2Matrix[ii][jj] << endl; } } }
step2:
Compile: g++ exampleVector2.cpp Run: ./a.out Loop by index: 0 1 10 11 20 21
例子3:(多纬数组)
step1:
#include <iostream> #include <vector> using namespace std; main() { vector< vector< vector<int> > > vI3Matrix(2, vector< vector<int> > (3, vector<int>(4,0)) ); for(int kk=0; kk<4; kk++) { for(int jj=0; jj<3; jj++) { for(int ii=0; ii<2; ii++) { cout << vI3Matrix[ii][jj][kk] << endl; } } } }
step2:
[root@localhost stl_test0001]# g++ exampleVector3.cpp [root@localhost stl_test0001]# ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
例子3:(Example of iterators used with a two dimensional vector)
step1:
#include <iostream> #include <vector> using namespace std; main() { vector< vector<int> > vI2Matrix; // Declare two dimensional array vector<int> A, B; vector< vector<int> >::iterator iter_ii; vector<int>::iterator iter_jj; A.push_back(10); A.push_back(20); A.push_back(30); B.push_back(100); B.push_back(200); B.push_back(300); vI2Matrix.push_back(A); vI2Matrix.push_back(B); cout << endl << "Using Iterator:" << endl; for(iter_ii=vI2Matrix.begin(); iter_ii!=vI2Matrix.end(); iter_ii++) { for(iter_jj=(*iter_ii).begin(); iter_jj!=(*iter_ii).end(); iter_jj++) { cout << *iter_jj << endl; } } }
step2:
Compile: g++ exampleVector2.cpp Run: ./a.out Using Iterator: 10 20 30 100 200 300
list使用:
step1:
// Standard Template Library example #include <iostream> #include <list> using namespace std; // Simple example uses type int main() { list<int> L; L.push_back(0); // Insert a new element at the end L.push_front(0); // Insert a new element at the beginning L.insert(++L.begin(),2); // Insert "2" before position of first argument // (Place before second argument) L.push_back(5); L.push_back(6); list<int>::iterator i; for(i=L.begin(); i != L.end(); ++i) cout << *i << " "; cout << endl; return 0; }
step2:
Compile: g++ example1.cpp Run: ./a.out Output: 0 2 0 5 6
Standard Template Library example using a class.
step1
// Standard Template Library example using a class. #include <iostream> #include <list> using namespace std; // The List STL template requires overloading operators =, == and <. class AAA { friend ostream &operator<<(ostream &, const AAA &); public: int x; int y; float z; AAA(); AAA(const AAA &); ~AAA(){}; AAA &operator=(const AAA &rhs); int operator==(const AAA &rhs) const; int operator<(const AAA &rhs) const; }; AAA::AAA() // Constructor { x = 0; y = 0; z = 0; } AAA::AAA(const AAA ©in) // Copy constructor to handle pass by value. { x = copyin.x; y = copyin.y; z = copyin.z; } ostream &operator<<(ostream &output, const AAA &aaa) { output << aaa.x << ‘ ‘ << aaa.y << ‘ ‘ << aaa.z << endl; return output; } AAA& AAA::operator=(const AAA &rhs) { this->x = rhs.x; this->y = rhs.y; this->z = rhs.z; return *this; } int AAA::operator==(const AAA &rhs) const { if( this->x != rhs.x) return 0; if( this->y != rhs.y) return 0; if( this->z != rhs.z) return 0; return 1; } // This function is required for built-in STL list functions like sort int AAA::operator<(const AAA &rhs) const { if( this->x == rhs.x && this->y == rhs.y && this->z < rhs.z) return 1; if( this->x == rhs.x && this->y < rhs.y) return 1; if( this->x < rhs.x ) return 1; return 0; } main() { list<AAA> L; AAA Ablob ; Ablob.x=7; Ablob.y=2; Ablob.z=4.2355; L.push_back(Ablob); // Insert a new element at the end Ablob.x=5; L.push_back(Ablob); // Object passed by value. Uses default member-wise // copy constructor Ablob.z=3.2355; L.push_back(Ablob); Ablob.x=3; Ablob.y=7; Ablob.z=7.2355; L.push_back(Ablob); list<AAA>::iterator i; for(i=L.begin(); i != L.end(); ++i) cout << (*i).x << " "; // print member cout << endl; for(i=L.begin(); i != L.end(); ++i) cout << *i << " "; // print with overloaded operator cout << endl; cout << "Sorted: " << endl; L.sort(); for(i=L.begin(); i != L.end(); ++i) cout << *i << " "; // print with overloaded operator cout << endl; return 0; }
step2:
Output: 7 5 5 3 7 2 4.2355 5 2 4.2355 5 2 3.2355 3 7 7.2355 Sorted: 3 7 7.2355 5 2 3.2355 5 2 4.2355 7 2 4.2355
C++ 函数模板
step1:
#include <iostream> using std::cout; using std::endl; template<class T> T max(const T* data, int size) { T result = data[0]; for(int i = 1 ; i < size ; i++) if(result < data[i]) result = data[i]; return result; } template<class T> T min(const T* data, int size) { T result = data[0]; for(int i = 1 ; i < size ; i++) if(result > data[i]) result = data[i]; return result; } int main() { double data[] = {1.5, 4.6, 3.1, 1.1, 3.8, 2.1}; int numbers[] = {2, 22, 4, 6, 122, 12, 1, 45}; const int dataSize = sizeof data/sizeof data[0]; cout << "Minimum double is " << min(data, dataSize) << endl; cout << "Maximum double is " << max(data, dataSize) << endl; const int numbersSize = sizeof numbers/sizeof numbers[0]; cout << "Minimum integer is " << min(numbers, numbersSize) << endl; cout << "Maximum integer is " << max(numbers, numbersSize) << endl; return 0; }
step2:
g++ random_shuffle22.cpp [root@localhost stl_test0001]# ./a.out Minimum double is 1.1 Maximum double is 4.6 Minimum integer is 1 Maximum integer is 122
参考:
http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html
http://www.cnblogs.com/shixinzhu/archive/2012/03/05/2380203.html
https://www.sgi.com/tech/stl/download.html
标签:
原文地址:http://www.cnblogs.com/super-d2/p/4655985.html