1.算術(shù)生成算法--求和accumulate
算術(shù)生成算法頭文件
算法簡(jiǎn)介:
容器區(qū)間元素求和:accumulate
像容器中添加元素:fill
accumulate求和:
accumulate(const _InIt _First, const _InIt _Last, _Ty _Val)
形參:_First、_Last --元素區(qū)間
_Val --累加的起始值
重載版本:
accumulate(const _InIt _First, const _InIt _Last, _Ty _Val, _Fn _Reduce_op)
形參:_First、_Last --元素區(qū)間
_Val --起始值
_Reduce_op --運(yùn)算規(guī)則(加、減、乘、除。。。)
#include
#include
#include
#include
using namespace std;
void test()
{
vectorvtr;
for (int i = 1; i <= 5; i++)
{
vtr.push_back(i);
}
auto sum=accumulate(vtr.begin(), vtr.end(), 0);
cout < "sum=" < sum < endl;
sum=accumulate(vtr.begin(), vtr.end(), 1, multiplies());
cout < "sum=" < sum < endl;
}
int main()
{
test();
system("pause");
}
2.算術(shù)生成算法--填充fill
void fill(const _FwdIt _First, const _FwdIt _Last, const _Ty& _Val)
函數(shù)功能:容器填充
形參:_First、_Last --要填充的區(qū)間
_Val --要填充的值
#include
#include
#include
#include
using namespace std;
class Print
{
public:
void operator()(int val)
{
cout < val < " ";
}
};
void test()
{
vectorvtr;
vtr.resize(10);
fill(vtr.begin(), vtr.end(), 666);
for_each(vtr.begin(), vtr.end(), Print());
}
int main()
{
test();
system("pause");
return 0;
}
3.常用集合算法--求交集set_intersection
常用集合算法:--頭文件
求交集(即兩個(gè)容器相同元素部分):set_intersection()
求并集:set_union()
求差集:set_different()
求交集:
_OutIt set_intersection(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
_OutIt set_intersection(_First1, _Last1, _First2, _Last2, _Dest);
形參:_First1、_Last1 --容器1的區(qū)間范圍
_First2、_Last2 --容器2的區(qū)間范圍
_Dest --結(jié)果保存起始迭代器
_Pred --排序規(guī)則
返回值:返回結(jié)果的最后一個(gè)元素的下一個(gè)位置的迭代器(end)
注意:求交集必須保證元素有序,默認(rèn)是從小到大
#include
#include
#include
using namespace std;
class Print
{
public:
void operator()(int val)
{
cout < val < " ";
}
};
void test()
{
vectort1 = { 1,2,3,4,5,6 };
vectort2 = { 1,3,5,7,8,9 };
vectort3;
//設(shè)置t3容器大小,min()為獲取最小值
t3.resize(min(t1.size(), t2.size()));
vector::iterator ret=set_intersection(t1.begin(), t1.end(), t2.begin(), t2.end(), t3.begin());
set_intersection()
cout < "t1與t2的交集為:" < endl;
for_each(t3.begin(), ret, Print());
cout < endl;
}
int main()
{
test();
system("pause");
}
4.常用集合算法--求并集set_union
求并集:
set_union(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
set_union(_ExPo&&, _FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _FwdIt3 _Dest,_Pr _Pred)
形參:_First1、_Last1 --容器1的區(qū)間范圍
_First2、_Last2 --容器2的區(qū)間范圍
_Dest --結(jié)果保存起始迭代器
_Pred --排序規(guī)則
返回值:返回結(jié)果的最后一個(gè)元素的下一個(gè)位置的迭代器(end)
注意:求并集必須保證元素有序,默認(rèn)是從小到大
#include
#include
#include
using namespace std;
class print
{
public:
void operator()(int val)
{
cout < val < " ";
}
};
void test()
{
vectorv1 = { 1,3,4,6,8,9 };
vectorv2 = { 2,3,3,4,7,9,10 };
vectorv3;
v3.resize(v1.size() + v2.size());
vector::iterator ret=set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
cout < "v1與v2的并集:" < endl;
for_each(v3.begin(), ret, print());
}
int main()
{
test();
system("pause");
}
5.常用集合算法--求差集set_difference
求差集:set_difference()
_OutIt set_difference(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
_OutIt set_difference(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
形參:_First1、_Last1 --容器1的區(qū)間范圍
_First2、_Last2 --容器2的區(qū)間范圍
_Dest --結(jié)果保存起始迭代器
_Pred --排序規(guī)則
返回值:返回結(jié)果的最后一個(gè)元素的下一個(gè)位置的迭代器(end)
注意:求差集必須保證元素有序,默認(rèn)是從小到大
#include
#include
#include
using namespace std;
class Print
{
public:
void operator()(int val)
{
cout < val < " ";
}
};
void test()
{
vectort1 = { 1,3,5,6,7,9,10 };
vectort2 = { 2,3,5,8,10 };
//t1與t2的補(bǔ)集:{1,6,7,9}; --除去和t2相同的元素
//t2與t1的補(bǔ)集:{2,8} --除去和t1相同的元素
vectort3;
//t3分配空間
t3.resize(max(t2.size(), t1.size()));
auto ret = set_difference(t1.begin(), t1.end(), t2.begin(), t2.end(), t3.begin());
cout < "t1與t2的補(bǔ)集:" < endl;
for_each(t3.begin(), ret, Print());
cout < endl;
ret = set_difference(t2.begin(), t2.end(), t1.begin(), t1.end(), t3.begin());
cout < "t2與t1的補(bǔ)集:" < endl;
for_each(t3.begin(), ret, Print());
cout < endl;
}
int main()
{
test();
system("pause");
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
算法
+關(guān)注
關(guān)注
23文章
4607瀏覽量
92826 -
C++
+關(guān)注
關(guān)注
22文章
2108瀏覽量
73617 -
STL
+關(guān)注
關(guān)注
0文章
86瀏覽量
18319
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
c語(yǔ)言入門(mén)知識(shí)之STL篇
這周終于可以給大家把STL方面的面試題總結(jié)出來(lái)了,突然發(fā)現(xiàn)它里面的細(xì)節(jié)非常多,只有你想不到的,沒(méi)有它沒(méi)有的。對(duì)于C++程序員來(lái)說(shuō),STL庫(kù)里面的知識(shí)也是非常重要的,只要想在技術(shù)這條路線(xiàn)上有長(zhǎng)遠(yuǎn)的發(fā)展,那么就一定要掌握它。不管是學(xué)
C++零基礎(chǔ)教程之STL關(guān)系類(lèi)算法,輕松上手C++ STL
編程語(yǔ)言C++語(yǔ)言
電子學(xué)習(xí)
發(fā)布于 :2023年01月14日 12:20:42
C++零基礎(chǔ)教程之STL集合類(lèi)算法,輕松上手C++ STL
編程語(yǔ)言C++語(yǔ)言
電子學(xué)習(xí)
發(fā)布于 :2023年01月14日 12:24:57
C++ STL的概念及舉例
本篇文章是作者本人使用STL 后的一些看法, 對(duì)於想要靠此文章學(xué)習(xí)STL, 是不可能的. 建議叁后面介紹的一些書(shū)入門(mén).
STL的概念
在STL 中, 大至上分
發(fā)表于 08-30 11:39
?1410次閱讀
STL算法在GIS中的應(yīng)用
使用STL 算法實(shí)現(xiàn)GIS 算法可以保證它的簡(jiǎn)潔和高效該文結(jié)合C++代碼實(shí)例抽象出了地理算子的概念應(yīng)用在GIS 算法當(dāng)中通過(guò)定制適配器來(lái)消除
發(fā)表于 06-28 16:55
?33次下載
C++課程資料詳細(xì)資料合集包括了:面向?qū)ο蟪绦蛟O(shè)計(jì)與C++,算法,函數(shù)等
本文檔的主要內(nèi)容詳細(xì)介紹的是C++課程資料資料合集包括了:面向?qū)ο蟪绦蛟O(shè)計(jì)與C++,算法,函數(shù),概述, C++語(yǔ)言基礎(chǔ),構(gòu)造數(shù)據(jù)類(lèi)型,數(shù)據(jù)類(lèi)型,C+
發(fā)表于 07-09 08:00
?18次下載
C語(yǔ)言教程:STL-for-each算法
C語(yǔ)言教程:STL-for-each算法(電源技術(shù)版面費(fèi)5400)-文檔為C語(yǔ)言教程:STL-for-each
發(fā)表于 09-17 12:42
?3次下載
C++設(shè)計(jì)新思維-泛型編程與設(shè)計(jì)之應(yīng)用
C++設(shè)計(jì)新思維-泛型編程與設(shè)計(jì)之應(yīng)用
發(fā)表于 11-16 15:59
?3次下載
STL的概述
C++ STL 是一套功能強(qiáng)大的 C++ 模板類(lèi),提供了通用的模板類(lèi)和函數(shù),這些模板類(lèi)和函數(shù)可以實(shí)現(xiàn)多種流行和常用的算法,關(guān)于 STL 呢,
C++之STL庫(kù)中的容器
前面跟大家介紹過(guò)STL庫(kù),STL主要是由6大部分組成,其中第一個(gè)提到的就是容器,容器在介紹STL中小哥有簡(jiǎn)單的跟大家介紹過(guò),今天稍微再詳細(xì)介紹一下
C++ STL基本概念是什么
STL,英文全稱(chēng) standard template library,中文可譯為標(biāo)準(zhǔn)模板庫(kù)或者泛型庫(kù),其包含有大量的模板類(lèi)和模板函數(shù),是 C++ 提供的一個(gè)基礎(chǔ)模板的集合,用于完成諸如輸入/輸出、數(shù)學(xué)計(jì)算等功能。
C++入門(mén)之通用算法
C++ 是一種強(qiáng)大的編程語(yǔ)言,它提供了許多通用算法,可以用于各種容器類(lèi)型。這些算法是通過(guò)迭代器來(lái)操作容器中的元素,因此它們是通用的,可以用于不同類(lèi)型的容器。在本篇博客中,我們將詳細(xì)介紹 C++
STL內(nèi)容介紹
1 什么是STL? STL(Standard Template Library),即標(biāo)準(zhǔn)模板庫(kù),是一個(gè)具有工業(yè)強(qiáng)度的,高效的C++程序庫(kù)。它被容納于C++標(biāo)準(zhǔn)程序庫(kù)(
評(píng)論