# Linux环境下stl库使用(vector)

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;
}
View Code

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
View Code

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;
}
}
}

View Code

step2:

Compile: g++ exampleVector2.cpp
Run: ./a.out

Loop by index:
0
1
10
11
20
21
View Code

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;
}
}
}
}
View Code

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
View Code

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;
}
}
}
View Code

step2:

Compile: g++ exampleVector2.cpp
Run: ./a.out

Using Iterator:
10
20
30
100
200
300
View Code

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;
}
View Code

step2:

Compile: g++ example1.cpp
Run: ./a.out

Output: 0 2 0 5 6
View Code
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 &copyin)   // 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;
}
View Code

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
View Code

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;
}
View Code

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
View Code

http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html

http://www.cnblogs.com/shixinzhu/archive/2012/03/05/2380203.html