天天看點

c++ STL 五 容器常用算法

周遊

   1.函數周遊法  

bool funcdemo(int value){
	cout << value << endl;        };
for_each(v.begin(), v.end(), funcdemo);
           

  2.仿函數周遊法;   重載小括号使用匿名對象調用 for_each()  傳回值就是   Myclass  對象

class MyClass{
public:
	void operator()(int v)
	{
		cout << v << endl;      }

};	
for_each(v.begin(), v.end(), MyClass());
           

查找

   一般類型 ,find_if   一樣, 隻是隻能使用仿函數

vector<int>::iterator pos = find(v.begin(), v.end(), 5);
           

 自定義類型   重載類中的==符号

class Person{
public:
	Person(string name)
	{
		this->name = name;
	}
	bool operator==(const Person& p)
	{
		if (this->name ==p.name)
		{
			return true;
		}
		return false;
	}
	string name;            };

vector<Person> vp;
Person p1("wyc");
Person p2("wy");
vp.push_back(p1);
vp.push_back(p2);
vector<Person>::iterator pos = find(vp.begin(), vp.end(), p2);
           

 拷貝

 copy(vp.begin(), vp.end(),  target.begin()  );   将 vp的内容拷貝到 target 容器内

替換

    replace(  v.begin(),  v.end(),  3, 100);   将v中所有3替換為 100

交換

 swap(v1,v2)

繼續閱讀