一.遍歷演算法
1.for_each
//普通函式
void
print01
(int val)
//仿函式
class
print02};
void
test01()
for_each
(v.begin()
, v.
end(
), print01)
; cout << endl;
for_each
(v.begin()
, v.
end(),
print02()
);}int
main()
2.transform
class
transform};
class
myprint};
void
test01()
vector<
int>vtarget;
//目標容器
vtarget.
resize
(v.size()
);//目標容器需要提前開闢空間
transform
(v.begin()
, v.
end(
), vtarget.
begin()
,transform()
);for_each
(vtarget.
begin()
, vtarget.
end(),
myprint()
);cout << endl;
}
二.查詢演算法
1.find
find可以在容器中找指定的元素,它的返回值是迭代器
class
person
//過載==
bool
operator==(
const person &p)
else
} string m_name;
int m_age;};
void
test01()
cout << endl;
//查詢是否有5這個元素
vector<
int>
::iterator it=
find
(v.begin()
, v.
end(),
5);if
(it == v.
end())
else
}void
test02()
else
}int
main()
2.find_if
class
greaterfive};
class
person
string m_name;
int m_age;};
class
greater20};
void
test01()
cout << endl;
//查詢是否有5這個元素
vector<
int>
::iterator it=
find_if
(v.begin()
, v.
end(),
greaterfive()
);if(it == v.
end())
else
}void
test02()
else
}int
main()
3.adjacent_find:查詢相鄰重複元素
void
test01()
else
}int
main()
4.binary_search
查詢指定元素是否存在,注意:必須是有序序列,否則查詢結果未知。
void
test01()
bool ret =
binary_search
(v.begin()
, v.
end(),
9);if
(ret)
else
}
5.count
統計元素個數
class
person
bool
operator==(
const person &p)
else
} string m_name;
int m_age;};
void
test01()
void
test02()
intmain()
6.count_if
按條件統計元素個數
class
greaterfive};
class
person
string m_name;
int m_age;};
class
greater20};
void
test01()
void
test02()
intmain()
演算法學習 之查詢
順序查詢 假設靜態查詢表的順序儲存結構為 typedef struct sstable int search seq sstable st,keytype key search seq 比較無監視哨的查詢演算法 int location sstable st elemtype e location ...
C STL的查詢演算法
假設你有乙個序列容器,或者有一對迭代器標識了乙個區間,現在你希望在容器中查詢一些資訊,這樣的查詢工作如何進行呢?你的選擇往往是 count,count if,find,find if,binary search,lower bound,upper bound,equal range.該如何選擇呢?現...
C STL 常用查詢演算法
find 查詢元素,內建型別 void test01 查詢在區間內出現的第乙個5,返回當前查詢元素迭代器 vector int iterator it find v.begin v.end 5 if it v.end else find 查詢元素,自定義型別,得告訴編譯器如何做對比 class pe...