日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【c++算法】变动性算法

發(fā)布時間:2025/1/21 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【c++算法】变动性算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

直接改變元素值,或者在復(fù)制到另一區(qū)間的過程中改變元素值

?

For_each

針對每個元素執(zhí)行某項操作

Copy

從第一個元素開始復(fù)制某段區(qū)間

Copy_backward

從最后一個元素開始復(fù)制某段區(qū)間

Transform

變動(并復(fù)制)元素,將兩個區(qū)間元素合并

Merge

合并兩個區(qū)間

Swap_ranges

交換區(qū)間內(nèi)的元素

Fill

以給定值替換每個元素

Finn_n

以給定值替換n個元素

Generate

以某項操作的結(jié)果替換每個元素

Generate_n

以某項操作的結(jié)果替換n個元素

Replace

將具有某特定值的元素替換為另一個值

Replace_if

將符合條件的元素替換為另一個值

Replace_copy

復(fù)制整個區(qū)間,同時將具有某特定值的元素替換為另一個值

Replace_copy_if

復(fù)制整個區(qū)間,同時將符合條件的元素替換為另一個值


#include?<iostream>
#include?<vector>
#include?<algorithm>
#include?<iterator>
#include?<list>

using?namespace?std;

template<class?T>
class?FunctionObjectType
{
private:
????T?theValue;
public:
????FunctionObjectType(const?T&?v):theValue(v)
????{

????}
public:
????void?operator()(T?&i)
????{
????????i?+=?theValue;
????}
};
/*--------------打印元素-------------*/
template<class?T>
inline?void?PrintElements(const?T&?coll,const?char*?optcstr="")
{
????typename?T::const_iterator?pos;

????std::cout<<optcstr;
????for(pos=coll.begin();pos?!=?coll.end();?++pos)
????????std::cout<<*pos<<"?";

????std::cout<<std::endl;
}

template<class?T>
inline?void?PrintElementsPos(const?T&?coll,const?char*?optcstr="")
{
????typename?T::const_iterator?pos;

????std::cout<<optcstr;
????for(pos=coll.begin();pos?!=?coll.end();?++pos)
????????std::cout<<&*pos<<"?";

????std::cout<<std::endl;
}

/*--------------插入int型數(shù)據(jù)------------------*/
template<class?T>
inline?void?InsertElements(T&?coll,int?first,int?last)
{
????for(int?i?=?first;?i<=last;?++i)
????????coll.insert(coll.end(),i);
}

void?print(int?elem)
{
????std::cout<<?elem?<<?"?";
}

//for_each對每個元素執(zhí)行操作
void?Learn_for_each2()
{
????std::cout<<std::endl<<"--------------------in?Learn?for_each2()"<<endl;

????vector<int>?coll;

????InsertElements(coll,1,9);
????PrintElements(coll,"coll?:?");

????std::cout<<"每個元素與第一個元素求和"<<endl;
????for_each(coll.begin(),coll.end(),
????????????FunctionObjectType<int>(*coll.begin()));

????PrintElements(coll,"coll?:?");

????std::cout<<endl;
}

void?Learn_copy()
{
????std::cout<<std::endl<<"--------------------in?Learn?copy()?copy_backward()"<<endl;

????vector<int>?coll1;
????list<int>?coll2;

????InsertElements(coll1,1,9);
????PrintElements(coll1,"coll1?:?");

????std::cout<<"使用back_inserter把coll1拷貝到coll2"<<std::endl;
????copy(coll1.begin(),coll1.end(),back_inserter(coll2));
????PrintElements(coll2,"coll2?:?");
????coll2.clear();

????std::cout<<"使用front_inserter把coll1拷貝到coll2"<<std::endl;
????copy(coll1.begin(),coll1.end(),front_inserter(coll2));
????PrintElements(coll2,"coll2?:?");
????coll2.clear();

????std::cout<<"使用inserter把coll1拷貝到coll2,從第開始處插入"<<std::endl;
????copy(coll1.begin(),coll1.end(),inserter(coll2,coll2.begin()));
????PrintElements(coll2,"coll2?:?");
????//coll2.clear();

????std::cout<<"把coll1拷貝到coll2,從第二個元素開始覆蓋"<<std::endl;
????copy(coll1.begin(),coll1.end(),++coll2.begin());
????PrintElements(coll2,"coll2?:?");
????//coll2.clear();

????std::cout<<"使用ostream_iterator,cout"<<std::endl;
????copy(coll2.begin(),coll2.end(),ostream_iterator<int>(cout,"?"));
????std::cout<<std::endl;
????coll2.clear();

????vector<char>?source(10,'.');
????for(int?c='a';c<='f';c++)
????{
????????source.push_back(c);
????}
????source.insert(source.end(),10,'.');
????PrintElements(source,"source??:??");

????std::cout<<"從位置7開始copy"<<std::endl;
????vector<char>?c1(source.begin(),source.end());
????copy(c1.begin()+10,c1.begin()+16,c1.begin()+7);
????PrintElements(c1,"coll3??:??");

????std::cout<<"從位置7開始backward?copy"<<std::endl;
????vector<char>?c2(source.begin(),source.end());
????copy_backward(c2.begin()+10,c2.begin()+16,c2.begin()+7);
????PrintElements(c2,"coll3??:??");
}

void?Learn_transforming()
{
????std::cout<<std::endl<<"--------------------in?Learn?transforming()"<<endl;
????std::cout<<"復(fù)制修改元素一氣完成"<<endl;

????vector<int>?coll1;
????list<int>?coll2;

????InsertElements(coll1,1,9);
????PrintElements(coll1,"coll1?:?");

????std::cout<<"求反?:?"<<std::endl;
????transform(coll1.begin(),coll1.end(),coll1.begin(),negate<int>());
????PrintElements(coll1,"coll1?negate?:?");

????std::cout<<"10倍?:?"<<std::endl;
????transform(coll1.begin(),coll1.end(),
????????????????????back_inserter(coll2),
????????????????????bind2nd(multiplies<int>(),10));
????PrintElements(coll2,"coll2?bind2nd?:?");

????std::cout<<"求反?:?";
????transform(coll2.begin(),coll2.end(),
????????????????????ostream_iterator<int>(cout,"?"),
????????????????????negate<int>());
}

void?Learn_swap_ranges()
{
????std::cout<<std::endl<<"--------------------in?Learn?swap_ranges()"<<endl;

????vector<int>?coll1;
????list<int>?coll2;

????InsertElements(coll1,1,9);
????InsertElements(coll2,20,35);
????PrintElements(coll1,"coll1?:?");
????PrintElements(coll2,"coll2?:?");

????std::cout<<"交換?:?"<<std::endl;
????list<int>::iterator?pos;
????pos?=?swap_ranges(coll1.begin(),coll1.end(),coll2.begin());

????PrintElements(coll1,"coll1?:?");
????PrintElements(coll2,"coll2?:?");
????if(pos?!=?coll2.end())
????{
????????std::cout<<"第一個沒有交換的元素是:"<<*pos<<std::endl;
????}

????std::cout<<"第一個元素"<<*coll2.begin()?<<"和最后一個元素"<<*coll2.rbegin()<<"互換:"<<std::endl;
????swap_ranges(coll2.begin(),++coll2.begin(),coll2.rbegin());
????PrintElements(coll2,"coll2?:?");
}

void?Learn_fill()
{
????std::cout<<std::endl<<"--------------------in?Learn?fill()?fill_n()"<<endl;

????list<string>?coll;

????std::cout<<"填充10次‘hello’?:?"<<std::endl;
????fill_n(back_inserter(coll),10,"hello");
????PrintElements(coll,"coll?:?");

????std::cout<<"coll用world填充?:?"<<std::endl;
????fill(coll.begin(),coll.end(),"world");
????PrintElements(coll,"coll?:?");

????std::cout<<"填充8次‘hello’?:?"<<std::endl;
????fill_n(coll.begin(),8,"hello");
????PrintElements(coll,"coll?:?");
}

void?Learn_generate()
{
????std::cout<<std::endl<<"--------------------in?Learn?generate()?generate_n()"<<endl;

????list<int>?coll;

????std::cout<<"賦值?10次隨機值?:?"<<std::endl;
????generate_n(back_inserter(coll),10,rand);
????PrintElements(coll,"coll?:?");

????std::cout<<"賦隨機值?:?"<<std::endl;
????generate(coll.begin(),coll.end(),rand);
????PrintElements(coll,"coll?:?");
}

void?Learn_replace()
{
????std::cout<<std::endl<<"--------------------in?Learn?replace()?replace_if()?replace_copy()?replace_copy_if()"<<endl;

????list<int>?coll;
????list<int>?coll2;

????InsertElements(coll,2,7);
????InsertElements(coll,5,9);
????PrintElements(coll,"coll?:?");

????std::cout<<"值為6的元素替換為1:?"<<std::endl;
????replace(coll.begin(),coll.end(),
????????????????6,
????????????????1);
????PrintElements(coll,"coll?:?");

????std::cout<<"小于5的元素替換為0:?"<<std::endl;
????replace_if(coll.begin(),coll.end(),
????????????????????bind2nd(less<int>(),5),
????????????????????0);
????PrintElements(coll,"coll?:?");

????std::cout<<"拷貝coll到coll2,拷貝過程中把5替換為55:?"<<std::endl;
????replace_copy(coll.begin(),coll.end(),
????????????????????back_inserter(coll2),
????????????????????5,
????????????????????55);
????PrintElements(coll,"coll?:?");
????PrintElements(coll2,"coll2?:?");

????std::cout<<"拷貝coll到coll2,拷貝過程中把小于5的替換為11:?"<<std::endl;
????replace_copy_if(coll.begin(),coll.end(),
????????????????????back_inserter(coll2),
????????????????????bind2nd(less<int>(),5),
????????????????????11);
????PrintElements(coll,"coll?:?");
????PrintElements(coll2,"coll2?:?");
}

int?main()
{
????cout<<"hello?world"<<endl;

????//--------------------變動性算法--------begin
????Learn_for_each2();
????Learn_copy();
????Learn_transforming();
????Learn_swap_ranges();
????Learn_fill();
????Learn_generate();
????Learn_replace();
????//cin.get();

????return?0;
}

?

轉(zhuǎn)載于:https://www.cnblogs.com/ningth/archive/2012/02/20/2359426.html

總結(jié)

以上是生活随笔為你收集整理的【c++算法】变动性算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天曰天天爽 | 性色av一区二区三区红粉影视 | 黄色精品视频在线观看 | 久久第一页 | 国产精品自拍偷拍 | 亚洲乱码视频在线观看 | av色先锋 | 欧美伦理片 | 毛片av网址 | 久草资源在线观看 | 美女色诱男人激情视频 | 国产精品免费91 | 伊人久久成人网 | 色吧视频 | 天美视频在线观看 | 中国黄色网址 | 国产精品美女主播 | av影院在线 | 在线中文字幕播放 | 国产精品77777 | 色婷在线| 九久久久久 | 美日韩丰满少妇在线观看 | 97潮色| 国产成人精品无码播放 | 97射射 | 日韩逼 | 精品一区电影国产 | 成人免费视频网 | 欧美全黄 | 国产精品一区二区人妻喷水 | 中国毛片网站 | 亚洲天堂不卡 | 美女视频黄是免费 | 国产精品调教视频 | 国产精品国产三级国产专播精品人 | 久久精品一区二区国产 | 成人a站 | 久久国产中文 | 成年人网站免费看 | 日韩一区二区三区高清 | 99在线观看免费 | 日韩精品成人无码专区免费 | 日本免费a视频 | 日日夜夜免费视频 | 男女啪啪免费看 | 欧州一区二区 | a级黄色小说 | 亚洲视频小说 | 成人片在线播放 | 亚洲乱色熟女一区二区三区 | 国产成a人亚洲精v品无码 | 久久久久亚洲av片无码下载蜜桃 | 国产一区二区三区视频免费在线观看 | 色人阁在线视频 | 成人教育av在线 | 亚洲欧美一区二区在线观看 | 国产精品久久久久高潮 | 一本色综合 | 综合久久综合久久 | 日本三级在线 | 18久久| 日本午夜视频 | 一区二区免费av | 久爱视频在线观看 | 亚洲加勒比在线 | 男人天堂2019 | 久久aaaa片一区二区 | 一级裸体视频 | 情涩快播| 亚洲熟妇av一区二区三区 | 91黄色短视频 | 中国a一片一级一片 | 性生交生活影碟片 | 综合爱爱网| 九色麻豆 | 91久久精 | 亚洲xxxx视频| 视频一区二区三区在线观看 | 国产日韩精品一区二区 | 99热精品国产| 97超碰人人草 | 国产鲁鲁| 四虎一级片 | 黄色大片在线播放 | 男人天堂影院 | 伊人网伊人网 | 亚洲精品在线观 | 狠狠狠狠狠狠狠干 | 亚洲第一色视频 | 日韩国产欧美在线观看 | 97精品人妻一区二区三区在线 | xxxxwww国产 | 精品中文一区二区三区 | 欧美在线精品一区 | 美国一级黄色大片 | 99人妻碰碰碰久久久久禁片 | 中文字幕人妻一区 | 向着小小的花蕾绽放 |