merge()
例如:vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元素
vecintc.resize(9); //擴大容量
merge(vecinta.begin(),vecinta.end(),vecintb.begin(),vecintb.end(),vecintc.begin());
此時vecintc就存放了按順序的1,2,3,4,5,6,7,8,9九個元素
sort()
//學生類
class cstudent:
public:
int m_iid;
string m_strname;
}//學號比較函式
bool compare(const cstudent &stua,const cstudent &stub)
void main()
random_shuffle()
srand(time(0)); //設定隨機種子
vectorvecint;
vecint.push_back(1);
vecint.push_back(3);
vecint.push_back(5);
vecint.push_back(7);
vecint.push_back(9);
string str("itcastitcast ");
random_shuffle(vecint.begin(), vecint.end()); //隨機排序,結果比如:9,7,1,5,3
random_shuffle(str.begin(), str.end()); //隨機排序,結果比如:" itstcasticat "
reverse()
vectorvecint;
vecint.push_back(1);
vecint.push_back(3);
vecint.push_back(5);
vecint.push_back(7);
vecint.push_back(9);
reverse(vecint.begin(), vecint.end()); //
具體**如下:
#include using namespace std;
#include "string"
#include #include #include "set"
#include #include "functional"
#include "iterator" //輸出流迭代器的標頭檔案
void printv(vector& v1)
}void merge()
class student
void printt()
public:
string m_name;
int m_id;
};//二元謂詞
bool compares(student &s1,student &s2)
//sort根據自定義函式物件,進行自定義資料型別的排序
//替換演算法的統一性,(實現的演算法和資料型別的分離)==》技術手段函式物件
sort(v1.begin(),v1.end(),compares); //自定義排序,按照id從小到大
cout << "排序後" << endl;
for (vector::iterator it = v1.begin(); it != v1.end(); it++) }
void shuffle()
void reverse()
void main()
STL中常用的查詢演算法
adjacent find 在iterator對標識元素範圍內,查詢一對相鄰重複元素,找到則返回指向這對元素的第乙個元素的迭代器。否則返回past the end。vectorvecint vecint.push back 1 vecint.push back 2 vecint.push back ...
演算法競賽中常用的STL
toc 可以理解為bit這個資料型別的陣列 即取值只為0 1 大多數情況下,每個元素所佔記憶體確實只有1bit,是bool型別的1 8。方便各種位操作的進行。構造方法 都需要在定義時指明長度 123 4567 8 預設 std bitset 16 foo 填充0 整數 std bitset 16 f...
STL 常用排序演算法
學習目標 演算法簡介 功能描述 函式原型 示例 include include void myprint int val void test01 int main 總結 sort屬於開發中最常用的演算法之一,需熟練掌握 功能描述 函式原型 示例 include include include cla...