锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 榪欑瘒絎旇涓昏鏄叾瀹氫箟鍜屽熀鏈殑浣跨敤錛? iostream榪唬鍣ㄧ殑鏋勯犲嚱鏁幫細 1. istream_iterator<T> in(strm); 鍒涘緩浠庤緭鍏ユ祦strm璇誨彇T綾誨瀷瀵硅薄鐨刬stream_iterator瀵硅薄 2. istream_iterator<T> in; istream_iterator瀵硅薄鐨勮秴鍑烘湯绔凱浠e櫒銆? 3. ostream_iterator<T> out(strm); 鍒涘緩灝員綾誨瀷鐨勫璞″啓鍒拌緭鍑烘祦strm鐨刼stream_iterator瀵硅薄 4. ostream_iterator<T> out(strm,delim); 鍒涘緩灝員綾誨瀷鐨勫璞″啓鍒拌緭鍑烘祦strm鐨刼stream_iterator瀵硅薄錛屽湪鍐欏叆榪囩▼涓嬌鐢╠elim浣滀負鍏冪礌鐨勫垎闅旂銆俤elim鏄互絀哄瓧絎︾粨鏉熺殑瀛楃鏁扮粍銆? 鍏堢湅istream_iterator涓涓緥瀛愶細 璇ョ▼搴忚鍙栭敭鐩樿緭鍏ワ紝鍐欏埌vec錛岀洿鍒伴亣鍒伴潪娉曡緭鍏ャ傚儚涓嬮潰榪欐牱錛?
1 2 3 4af
1 2 3 4
紼嬪簭寰幆浠巆in璇誨彇int鍨嬫暟鎹紝騫跺皢璇誨叆鐨勫唴瀹逛繚瀛樺湪vec銆傛瘡嬈″驚鐜兘浼氭鏌in_it鏄惁涓篹of銆傚叾涓璭of榪唬鍣ㄥ畾涔変負絀虹殑istream_iterator瀵硅薄錛岀敤浣滅粨鏉熻凱浠e櫒銆傜粦鍦ㄦ祦涓婄殑榪唬鍣ㄥ湪閬囧埌鏂囦歡鎴栨煇涓敊璇椂錛屽皢絳変簬緇撴潫榪唬鍣ㄧ殑鍊箋?
濡傜▼搴忔敞閲婇噷鐨勶紝榪欓儴鍒嗗彲浠ョ敤
vector<int> vec(cin_it, end_of_stream)//construct vec from an iterator range
鏉ヤ唬鏇褲?
榪欓噷錛岀敤涓瀵規爣璁板厓绱犺寖鍥寸殑榪唬鍣ㄦ瀯閫爒ec瀵硅薄銆傝繖浜涜凱浠e櫒鏄痠stream_iterator瀵硅薄錛岃繖灝辨剰鍛崇潃榪欐鑼冨洿鐨勫厓绱犳槸閫氳繃璇誨彇鎵鍏寵仈鐨勬祦鏉ヨ幏寰楃殑銆傝繖涓瀯閫犲嚱鏁扮殑鏁堟灉鏄cin錛岀洿鍒板埌杈炬枃浠剁粨鏉熸垨杈撳叆鐨勪笉鏄痠nt鍨嬫暟鍊間負姝€傝鍙栫殑鍏冪礌鐢ㄤ簬鏋勯爒ec瀵硅薄銆?
鍦ㄥ垱寤篿stream_iterator鏃訛紝鍙洿鎺ュ皢瀹冪粦瀹氬埌涓涓祦涓娿傚彟涓縐嶆柟娉曟槸鍒涘緩鏃朵笉鎻愪緵瀹炲弬錛屽垯璇ヨ凱浠e櫒鎸囧悜瓚呭嚭鏈鐨勪綅緗俹stream_iterator涓嶆彁渚涜秴鍑烘湯绔凱浠e櫒銆?
ostream_iterator瀵硅薄蹇呴』涓庣壒瀹氱殑嫻佺粦鍦ㄤ竴璧楓傚湪鍒涘緩ostream_iterator鏃訛紝鍙彁渚涚浜屼釜錛堝彲閫夌殑錛夊疄鍙傦紝鎸囧畾灝嗗厓绱犲啓鍏ヨ緭鍑烘祦鏃朵嬌鐢ㄧ殑鍒嗛殧絎︺傚垎闅旂蹇呴』鏄疌椋庢牸瀛楃涓層傚洜涓哄畠鏄疌椋庢牸瀛楃涓詫紝鎵浠ュ繀欏諱互絀哄瓧絎︾粨鏉燂紱鍚﹀垯錛屽叾琛屼負灝嗘槸鏈畾涔夌殑銆?
鐪嬩釜ostream_iterator鐨勪緥瀛愶細 榪欎釜紼嬪簭璇籧in錛屽茍灝嗘瘡涓鍏ョ殑鍊間緷嬈″啓鍒癱out涓嶅悓鐨勮銆?
棣栧厛錛屽畾涓涓猳stream_stream瀵硅薄錛岀敤浜庡皢string綾誨瀷鐨勬暟鎹啓鍒癱out涓紝姣忎釜string瀵硅薄鍚庤窡涓涓?#8221;test”鍜屾崲琛岀銆傚畾涔変袱涓猧stream_iterator瀵硅薄錛岀敤浜庝粠cin涓鍙杝tring瀵硅薄銆倃hile寰幆綾諱技浜庡墠涓涓緥瀛愩備絾鏄繖涓嬈′笉鏄皢璇誨彇鐨勬暟鎹瓨鍌ㄥ湪vector瀵硅薄錛岃屾槸灝嗚鍙栫殑鏁版嵁浠樼粰out_iter,浠庤岃緭鍑哄埌cout涓娿?
*out_iter = *in_iter;榪欎竴鍙ユ墽琛屾椂錛屼細鍚慶onsole鎵撳嵃銆?
杈撳嚭綾諱技浜庤繖涓牱瀛愶細
123
123:test
abc
abc:test
xyz
xyz:test
鍙傝冿細
1. 銆奀++Primer銆?
鍑芥暟澹版槑錛?/p> 鍑芥暟瑙i噴錛?
瀵瑰叾杈撳叆鑼冨洿[first,last)鐨勬瘡涓涓厓绱犲簲鐢ㄥ嚱鏁幫紙鎴栧嚱鏁板璞★級f銆傚鏋渇鏈夎繑鍥炲鹼紝灝卞拷鐣ヨ榪斿洖鍊箋傝凱浠e櫒鏄緭鍏ヨ凱浠e櫒錛屾墍浠涓嶈兘鍐欏厓绱犮?
鍑芥暟琛屼負綾諱技浜庤繖鏍鳳細 鍏充簬f鐨勫畾涔夛細
Unary function taking an element in the range as argument. This can either be a pointer to a function or an object whose class overloads operator(). 渚嬪瓙錛?/p>
杈撳嚭錛?
myvector contains:
myfunction: 10
myfunction: 20
myfunction: 30
myvector contains:
myclass: 10
myclass: 20
myclass: 30
浜岋細鏂規硶 1.鏋勯犲嚱鏁?/b>錛宮ap鏈?涓瀯閫犲嚱鏁般備絾鏄垜浠氬父鐢╩ap<type1,type2> m;榪欑鏂規硶鏉ユ瀯閫犱竴涓猰ap瀹炰緥銆? 2.鏁版嵁鎻掑叆錛宮ap閫氬父鐢ㄤ笅闈㈢殑涓夌鏂瑰紡鎻掑叆鏁版嵁銆? 1),鐢╥nsert鏂規硶鎻掑叆pair鏁版嵁銆?/p> 2,)鐢╥nsert鍑芥暟鎻掑叆value_type鏁版嵁銆?/p> 鍏跺疄榪欎釜鏂規硶鍜屼笂闈㈢殑鏈川涓婃槸涓鏍風殑銆傚洜涓簐alud_type 灝辨槸pair綾誨瀷鐨勶紝鍙槸鎹釜鏂規硶鑰屽凡錛屽彲浠ラ氳繃 cout<<typeid(map<string,int>::value_type).name()鏉ヨ幏寰?value_type鐨勭被鍨嬶紝寰楀埌綾誨瀷涓?
struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int>璇存槑鏄釜struct pair綾誨瀷鐨勩?
3,)閫氳繃閲嶈澆[]鏉ユ彃鍏ユ暟鎹?/p> 榪欑娉曞紡鏄氳繃閲嶈澆[]鏉ュ疄鐜扮殑錛屼絾鏄渶瑕佹敞鎰忕殑鏄紝榪欑娉曞紡鍜屽墠涓ょ鏈夋湰璐ㄧ殑鍖哄埆錛岀湅涓嬮潰鐨勪唬鐮?
m.insert(pair<string,int>("ds",5));
m.insert(pair<string,int>("ds",15));
褰撳叧閿瓧鐩稿悓鐨勬椂鍊欙紝涓嶄細鏀瑰彉浠栫殑鍊鹼紝涔熷氨鏄鍦ㄨ皟鐢╥nsert鍑芥暟鐨勬椂鍊欙紝浼氭鏌ワ紝榪欎釜鍏抽敭瀛楁槸鍚﹀瓨鍦ㄤ簡錛屽鏋滃瓨鍦紝閭d箞灝變笉鍋氫換浣曟搷浣溿傚惁鍒欐彃鍏ユ柊鐨勬暟鎹?
m["ds"] = 4;
m["ds"] = 10;
榪欑鏂瑰紡鎻掑叆鏁版嵁鏄笉浼氬仛媯鏌ョ殑錛屼細鐩存帴鍦ㄩ偅涓偣涓婂啓涓婂叧閿瓧鍜屽鹼紝涔熷氨鏄銆俤s欏圭殑鍊煎皢鏄?0.
3錛屾暟鎹亶鍘嗐?/b>
stl閲岀殑瀹瑰櫒鐨勯亶鍘嗛兘鏄氳繃榪唬鍣ㄦ潵閬嶅巻鐨勩傚嵆渚挎槸鐢ㄦ暟緇勭殑鏂瑰紡錛屼篃鏄氳繃榪唬鍣ㄣ傛暟鎹亶鍘嗕篃鏈変笁縐嶆硶寮忥紝1錛屽悜鍓嶈凱浠e櫒錛?錛岀敤鍙嶅悜榪唬鍣紝3錛屾暟緇勶紝絎竴縐嶆柟寮忓墠闈篃灝辨湁璇存槑銆備笅闈㈣絎簩絎笁縐嶏紝
鍙嶅悜榪唬鍣ㄧ殑鏂瑰紡銆?
榪欐牱鏄互鐩稿弽鐨勬硶寮忚緭鍑虹殑銆?
鏁扮粍鏂瑰紡 4 .鏁版嵁鐨勬煡鎵撅紙鍖呮嫭鍒ゅ畾榪欎釜鍏抽敭瀛楁槸鍚﹀湪map涓嚭鐜幫級
鍦ㄨ繖閲屾垜浠皢浣撲細錛宮ap鍦ㄦ暟鎹彃鍏ユ椂淇濊瘉鏈夊簭鐨勫ソ澶勩?
瑕佸垽瀹氫竴涓暟鎹紙鍏抽敭瀛楋級鏄惁鍦╩ap涓嚭鐜扮殑鏂規硶姣旇緝澶氾紝榪欓噷鏍囬铏界劧鏄暟鎹殑鏌ユ壘錛屽湪榪欓噷灝嗙┛鎻掔潃澶ч噺鐨刴ap鍩烘湰鐢ㄦ硶銆?
榪欓噷緇欏嚭涓?2)縐嶆暟鎹煡鎵炬柟娉?
絎竴縐嶏細鐢╟ount鍑芥暟鏉ュ垽瀹氬叧閿瓧鏄惁鍑虹幇錛屽叾緙虹偣鏄棤娉曞畾浣嶆暟鎹嚭鐜頒綅緗?鐢變簬map鐨勭壒鎬э紝涓瀵逛竴鐨勬槧灝勫叧緋伙紝灝卞喅瀹氫簡count鍑芥暟鐨勮繑鍥炲煎彧鏈変袱涓紝瑕佷箞鏄?錛岃涔堟槸1錛屽嚭鐜扮殑鎯呭喌錛屽綋鐒舵槸榪斿洖1浜?
絎簩縐嶏細鐢╢ind鍑芥暟鏉ュ畾浣嶆暟鎹嚭鐜頒綅緗紝瀹冭繑鍥炵殑涓涓凱浠e櫒錛屽綋鏁版嵁鍑虹幇鏃訛紝瀹冭繑鍥炴暟鎹墍鍦ㄤ綅緗殑榪唬鍣紝濡傛灉map涓病鏈夎鏌ユ壘鐨勬暟鎹紝瀹冭繑鍥炵殑榪唬鍣ㄧ瓑浜巈nd鍑芥暟榪斿洖鐨勮凱浠e櫒 5.鏁版嵁娓呯┖錛屾垨鍒ょ┖錛?/b>
娓呯┖鏁版嵁鐢╟lear鍑芥暟錛屽垽鏂暟鎹槸鍚︽槸絀虹敤empty鍑芥暟銆?
6.鏁版嵁鍒犻櫎銆?/b>
鏁版嵁鍒犻櫎鐢╡rase鍑芥暟錛岃繖涓嚱鏁版湁3涓噸杞藉嚱鏁幫紝鐢ㄧ殑鏃跺欙紝鍙殢鏈鴻岀敤銆傛敞鎰忕敤榪欎釜鍑芥暟鍚庯紝鐩稿叧鐨勮凱浠e櫒灝嗕細澶辨晥銆?
涓夛細pair鏄痵tl閲?鐩墠鎴戠煡閬撶殑)瀹氫箟鐨勪竴涓猻truct錛?/font>鍦╩sdn涓婃煡鍒板涓嬬殑淇℃伅銆?
template<class Type1, class Type2>
struct pair
{
typedef Type1 first_type;
typedef Type2 second_type
Type1 first;
Type2 second;
pair( );
pair(
const Type1& __Val1,
const Type2& __Val2
);
template<class Other1, class Other2>
pair(
const pair<Other1, Other2>& _Right
);
涓庝箣鐩稿叧鐨勬槸make_pair鍑芥暟銆傛槸涓ā鏉垮嚱鏁般?
template<class Type1, class Type2> pair<Type1, Type2> make_pair( Type1 _Val1, Type2 _Val2 );
鍥涳細鍏充簬map鐨勮凱浠e櫒錛?/font>
瀵規暟鎹殑鎻掑叆錛岄亶鍘嗭紝鏌ユ壘絳夋搷浣滐紝榪唬鍣ㄥ皢涓嶄細澶辨晥錛屼絾鏄垹闄ゆ搷浣滀細澶辨晥銆傝繖涓巚ector絳夊簭鍒楀紡瀹瑰櫒鏄笉涓鏍風殑銆?
浜旓細鏁堢巼
鍥犱負鍐呴儴RB-TREE鎵浠ュぇ澶氭暟鐨勬搷浣滅殑鏃墮棿澶嶆潅搴﹂兘鏄疧(logN)錛岀┖闂村垎鏋愶紝鍦ㄨ繖浜涜妭鐐逛笉淇濆瓨鏁版嵁鐨勬儏鍐典笅灝遍渶瑕侊紝宸﹀彸瀛╁瓙鎸囬拡錛屾寚鍚戠埗鑺傜偣鐨勬寚閽堬紝璇存槑綰㈤粦鐨勬灇涓懼箋?
鍏細map鐨刱ey鐨勬瘮杈冿細
value_compare value_comp ( ) const;
鍏惰繑鍥炲兼槸涓涓瘮杈冪被鐨勫璞★紝榪欎釜綾繪槸map::value_compare錛屽茍涓旀槸map鐨勪竴涓唴閮ㄧ被銆?
榪斿洖鐨勮繖涓璞″彲浠ョ敤鏉ラ氳繃姣旇緝涓や釜鍏冪礌鐨剉alue鏉ュ垽鍐沖畠浠搴旂殑key鍦╩ap鐨勪綅緗皝鍦ㄥ墠闈㈣皝鍦ㄥ悗闈€?
涓嬮潰鏄竴涓畝鍗曠殑渚嬪瓙錛岀湅涓涓嬪氨浼氭洿鏄庣櫧浜? 杈撳嚭緇撴灉:
mymap contains:
x => 1001
y => 2002
z => 3003
瑙i噴涓涓嬶紝涓婇潰璇彞while閲岄潰鐨刴ymap.value_comp()(*it++, highest)鍦ㄨ繖鏍風殑鏉′歡涓嬩細榪斿洖true:
*it++瀵瑰簲鐨刱ey鍦╩ap涓帓鍦╤ighest瀵瑰簲鐨刱ey鐨勫墠闈㈡椂銆?/p>#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
istream_iterator<int> cin_it(cin);//read ints from cin
istream_iterator<int> end_of_stream;//end iterator value(eof)
vector<int> vec(cin_it, end_of_stream);
//also should be written like this:
//vector<int> vec;
//while (cin_it != end_of_stream)
//vec.push_back(*cin_it++);
vector<int>::iterator it=vec.begin();
while (it!=vec.end()) {
cout << " " << *it++;
}
cout << endl;
return 0;
}#include <iostream>
#include <iterator>
#include <string>
using namespace std;
int main()
{
ostream_iterator<string> out_iter(cout, ":test\n");//write one string per line to the standard output
istream_iterator<string> in_iter(cin),eof;//read strings from standard input and the end iterator
while (in_iter!=eof) {
//write value of in_iter to standard output
//and then increment the iterator to get the next value from cin
*out_iter = *in_iter;//write to standard output here
++out_iter;
++in_iter;
}
return 0;
}template<class InputInterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function f);template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function f)
{
while (first!=last)
f(*first++);
return f;
}
Its return value, if any, is ignored.
//for_each example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
void myfunction(int i)
{
cout << "myfunction: " << i << endl;
}
struct myclass
{
void operator()(int i) { cout << "myclass: " << i << endl; }
}myobject;
int main()
{
vector<int> myvector;
myvector.push_back(10);
myvector.push_back(20);
myvector.push_back(30);
cout << "myvector contains: " << endl;
for_each(myvector.begin(),myvector.end(),myfunction);
cout << "myvector contains: " << endl;
for_each(myvector.begin(),myvector.end(),myobject);
return 0;
} 1: void main( VOID )
2: {
3: map<string,int> m;
4: m.insert(pair<string,int>("sa",67));
5: m.insert(make_pair<string,int>("sd",565));//鐢╩ake_pair鏂規硶(鍑芥暟)浜х敓pair瀵硅薄銆?/span>
6: map<string,int>::iterator it = m.begin();
7: while(it!=m.end())
8: {
9: cout<<it->first<<" "<<it->second<<endl;
10: it++;
11: }
12: }
1: void main( VOID )
2: {
3: map<string,int> m;
4: m.insert(map<string,int>::value_type("sd",5));
5: map<string,int>::iterator it = m.begin();
6: while(it!=m.end())
7: {
8: cout<<it->first<<" "<<it->second<<endl;
9: it++;
10: }
11: }
1: void main( VOID )
2: {
3: map<string,int> m;
4: cout<<typeid(map<string,int>::value_type).name()<<endl;
5: m["ds"] = 4;
6: m["ds"] = 10;
7: map<string,int>::iterator it = m.begin();
8: while(it!=m.end())
9: {
10: cout<<it->first<<" "<<it->second<<endl;
11: it++;
12: }
13: }
void main( VOID )
{
map<string,int> m;
m["ds"] = 4;
m["as"] = 10;
m.insert(pair<string,int>("cs",5));
m["bs"] = 123;
map<string,int>::iterator it = m.begin();
for(int i=1;i<=m.size();i++)
{
cout<<m[it->first]<<endl;//榪欓噷鏄敤閲嶈澆[]鏉ュ緱鍒皏alue鐨勩?/span>
it++;
}
}
#include <iostream>
#include <fstream>
#include <string>
#include <map>
using namespace std;
void main()
{
//瀹氫箟map 瀵硅薄
map<string,int> word;
//瀹氫箟鎸囬拡
map<string,int>::iterator it;
//鍚憌ord 鎻掑叆鍏冪礌 ("a",9)
word.insert (map<string,int>::value_type("a",9));
//鏌ユ壘 閿槸"a"鐨勫厓绱狅紝榪斿洖鎸囧悜鍏冪礌鐨勬寚閽堛?/span>
it=word.find ("a");
//濡傛灉鍏冪礌涓嶅瓨鍦紝鎸囬拡鎸囧悜word.end().
if(it!=word.end ())
cout<<it->second<<endl; //杈撳嚭鍏冪礌鐨勫?/span>
//鏌ユ壘 閿槸"a"鐨勫厓绱狅紝
int result=word.count ("a");
//濡傛灉閿瓨鍦ㄨ繑鍥?錛屽惁鍒欒繑鍥?
if(result)
cout<<word["a"]<<endl; //杈撳嚭鍏冪礌鐨勫?/span>
cout<<endl;
}
#include <iostream>
#include <map>
using namespace std;
int main ()
{
map<char,int> mymap;
map<char,int>::iterator it;
pair<char,int> highest;
mymap['x']=1001;
mymap['y']=2002;
mymap['z']=3003;
cout << "mymap contains:\n";
highest=*mymap.rbegin(); // last element
it=mymap.begin();
do {
cout << (*it).first << " => " << (*it).second << endl;
} while ( mymap.value_comp()(*it++, highest) );
return 0;
}
01 #include <algorithm>
02 #include <stdio.h>
03
04 int main()
05 {
06 聽聽聽 size_t indexs = -1;
07 聽聽聽 size_t ps = 100;
08 聽聽聽 int index = -1;
09 聽聽聽 int p = 100;
10 聽聽聽 printf("%d\n",std::min(p,index));
11 聽聽聽 printf("%d\n",std::min(ps,indexs));
12 聽聽聽 return 0;
13 }
聽
鍏跺疄鏄緢綆鍗曠殑棰樼洰錛屼笉榪囪瀵箂ize_t綾誨瀷鏈変竴涓簡瑙f墠琛屻?
鍏充簬size_t鐨勬潵婧?/strong>錛?
鏁版嵁綾誨瀷"socklen_t"鍜宨nt搴旇鍏鋒湁鐩稿悓鐨勯暱搴︺傚惁鍒欏氨浼氱牬鍧?BSD濂楁帴瀛楀眰鐨勫~鍏?POSIX寮濮嬬殑鏃跺欑敤鐨勬槸size_t, Linus Torvalds(浠栧笇鏈涙湁鏇村鐨勪漢,浣嗘樉鐒朵笉鏄緢澶? 鍔姏鍚戜粬浠В閲婁嬌鐢╯ize_t鏄畬鍏ㄩ敊璇殑,鍥犱負鍦?4浣嶇粨鏋勪腑 size_t鍜宨nt鐨勯暱搴︽槸涓嶄竴鏍風殑,鑰岃繖涓弬鏁?涔熷氨鏄痑ccept鍑芥暟鐨勭涓夊弬鏁?鐨勯暱搴﹀繀欏誨拰int涓鑷?鍥犱負榪欐槸BSD濂楁帴瀛楁帴鍙f爣鍑?鏈緇圥OSIX鐨勯偅甯浼欐壘鍒頒簡瑙e喅鐨勫姙娉?閭e氨鏄垱閫犱簡涓涓柊鐨勭被鍨?socklen_t".Linux Torvalds璇磋繖鏄敱浜庝粬浠彂鐜頒簡鑷繁鐨勯敊璇絾鍙堜笉濂芥剰鎬濆悜澶у浼欏効鎵胯,鎵浠ュ彟澶栧垱閫犱簡涓涓柊鐨勬暟鎹被鍨?銆?
聽
size_t鍦–璇█涓氨鏈変簡錛宻ize_t鍜宻size_t鏄疉NSI C鎻愪緵鐨勬爣鍑嗗ご鏂囦歡閲屽畾涔夌殑涓涓?鏁版嵁綾誨瀷"錛屽叾瀹炲茍涓嶆槸鏂扮殑鏁版嵁綾誨瀷錛屼笉鏄叧閿瓧錛屾槸閫氳繃typedef浠庡凡鏈夋暟鎹被鍨嬪畾涔夎屾潵銆?
ANSI C鎬誨叡鎻愪緵浜?4涓ご鏂囦歡銆?
<cstddef>閲岃繖涔堝畾涔変簡
#include <stddef.h>
using ::size_t
using::ptrdiff_t
鍦?usr/lib/gcc/i486-linux-gnu/4.4/include涓嬮潰
<stddef.h>閲岄潰鎴戞壘鍒頒簡榪欎箞鍑犲彞錛?
#ifndef __SIZE_TYPE__
#define __SIZE__TYPE__ long unsigned int
#endif
#if !(defined(__GUNU__) && defined (size_t))
typedef __SIZE_TYPE__ size_t;
#ifdef __BEOS
typedef long ssize_t
鈥?
娌″お鐪嬫槑鐧斤紝涓嶈繃浠庣綉涓婃壘鍒頒簡涓嶉敊鐨勪竴涓?strong>瑙i噴錛?
聽
size_t鏄負浜嗘柟渚跨郴緇熶箣闂寸殑縐繪鑰屽畾涔夌殑銆?
鍦?2浣嶇郴緇熶笂瀹氫箟涓?unsigned int
鍦?4浣嶇郴緇熶笂瀹氫箟涓?unsigned long
聽
鏇村噯紜殑璇存硶鏄湪32浣嶇郴緇熶笂鏄?2浣嶆棤絎﹀彿鏁村瀷
鍦?4浣嶇郴緇熶笂鏄?4浣嶆棤絎﹀彿鏁村瀷
聽
size_t涓鑸敤鏉ヨ〃紺轟竴縐嶈鏁幫紝姣斿鏈夊灝戜笢瑗胯鎷瘋礉絳夈?
sizeof鎿嶄綔絎︾殑緇撴灉綾誨瀷鏄痵ize_t,
璇ョ被鍨嬩繚璇佽兘瀹圭撼瀹炵幇鎵寤虹珛鐨勬渶澶у璞$殑瀛楄妭澶у皬銆?
聽
瀹冪殑鎰忎箟澶ц嚧鏄?閫備簬璁¢噺鍐呭瓨涓彲瀹圭撼鐨勬暟鎹」鐩殑涓暟鐨勬棤絎﹀彿鏁存暟綾誨瀷"銆?
鎵浠ワ紝瀹冨湪鏁扮粍涓嬫爣鍜屽唴瀛樼鐞嗗嚱鏁頒箣綾葷殑鍦版柟騫挎硾浣跨敤
聽
ssize_t:
榪欎釜鏁版嵁綾誨瀷鐢ㄦ潵琛ㄧず鍙互琚墽琛岃鍐欐搷浣滅殑鏁版嵁鍧楃殑澶у皬銆傚畠鍜宻ize_t綾諱技錛屼絾蹇呴』鏄痵igned銆?
鍐嶆潵鐪嬩笅size_t涓巗ize_type鐨勫尯鍒?/strong>錛?
鎴戣寰楁湁涓鍙ヨ瘽鎬葷粨鐨勫緢濂斤細
size_t鏄叏灞鐨勶紝鑰宻ize_type鏄窡瀹瑰櫒鐩稿叧鐨勩?
鎵句簡涓嬬浉鍏崇殑鏂囦歡錛?
/c++/4.3/bits/stl_tree.h,stl_list.h,stl_deque.h絳夌洿鎺ヨ繖涔堝畾涔変簡
typedef size_t size_type
stl_mutiset.h鍒欒繖涔堝畾涔夌殑錛?
typedef typename _Rep_type::size_type size_type;
聽
閭d箞size_type鍒板簳鏄竴縐嶄粈涔堟牱鐨勭被鍨嬪憿錛?
string綾葷被鍨嬪拰璁稿鍏朵粬搴撶被鍨嬮兘瀹氫箟浜嗕竴浜涢厤濂楃被鍨嬶紙companion type錛夈傞氳繃榪欎簺閰嶅綾誨瀷錛屽簱綾誨瀷鐨勪嬌鐢ㄥ氨鑳戒笌鏈哄櫒鏃犲叧銆俿ize_type灝辨槸榪欎簺閰嶅綾誨瀷涓殑涓縐嶃?
size_type琚畾涔変負涓巙nsigned鍨嬶紙unsigned int, unsigned long錛夊叿鏈夌浉鍚岀殑鍚箟錛岃屼笖鍙互淇濊瘉瓚沖澶ц兘澶熷瓨鍌ㄤ換鎰弒tring瀵硅薄鐨勯暱搴︺備負鑰屾潵浣跨敤鐢眘tring綾誨瀷瀹氫箟鐨剆ize_type綾誨瀷銆傜▼搴忓憳蹇呴』鍔犱笂浣滅敤浜庢搷浣滅鏉ヨ鏄庢墍浣跨敤鐨剆ize_type綾誨瀷鏄敱string綾誨畾涔夌殑銆?
鎴戜滑涓轟粈涔堜笉閫傜敤int鍙橀噺鏉ヤ繚瀛榮tring鐨剆ize鍛紵
浣跨敤int鍙橀噺鐨勯棶棰樻槸錛氭湁浜涙満鍣ㄤ笂鐨刬nt鍙橀噺鐨勮〃紺鴻寖鍥村お灝忥紝鐢氳嚦鏃犳硶瀛樺偍瀹為檯騫朵笉闀跨殑string瀵硅薄銆傚鍦ㄦ湁16浣峣nt鍨嬬殑鏈哄櫒涓婏紝int綾誨瀷鍙橀噺鏈澶у彧鑳借〃紺?2767涓瓧絎︾殑string瀵硅薄銆傝岃兘瀹圭撼涓涓枃浠跺唴瀹圭殑string瀵硅薄杞繪槗灝辮兘瓚呰繃榪欎釜鏁板瓧錛屽洜姝わ紝涓轟簡閬垮厤婧㈠嚭錛屼繚瀛樹竴涓猻tring瀵硅薄鐨剆ize鐨勬渶瀹夊叏鐨勬柟娉曞氨鏄嬌鐢ㄦ爣鍑嗗簱綾誨瀷string錛氾細size_type().
涓鐐規敞鎰?/span>錛氳櫧鐒舵槸鍦ㄥ涔犳爣鍑嗗簱string鐨勬椂鍊欏閥閬囦簡size_type綾誨瀷錛屼絾鏄紝鍏跺疄vector搴撲篃鍙互瀹氫箟size_type綾誨瀷錛屽湪vector搴撲腑榪樻湁涓涓猟ifference_type綾誨瀷錛岃綾誨瀷鐢ㄦ潵瀛樺偍浠諱綍涓や釜榪唬鍣ㄥ璞¢棿鐨勮窛紱伙紝鎵浠ユ槸signed綾誨瀷鐨勩?
聽
鍟板暟鍡﹀棪璇翠簡榪欎箞澶氾紝鍏跺疄鍏充簬榪欎釜闂鏂囩珷閲岀孩瀛楁爣娉ㄧ殑閮ㄥ垎灝辮凍澶熶簡銆傚叾浠栫殑鐪嬩笅鍔犳繁鍗拌薄鍗沖彲錛屾渶寮濮嬬殑紼嬪簭緇撴灉杈撳嚭涓猴細
-1 100銆?
聽
聽
聽
聽
聽
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
int main()
{
deque<double> values;
ostream_iterator<double> output(cout," ");
values.push_front(2.2);//鍙傜敤浜巐ist鍜宒eque,鑰屼笉閫備簬vector
values.push_front(2.3);
values.push_back(1.1);
cout << "values contains: ";
for ( int i=0;i<values.size();i++)
cout << values[i] << ' ';
values.pop_front();
cout << "\nAfter pop_front values contains: ";
copy(values.begin(),values.end(),output);
values[1]=5.4;
cout << "\nAfter values[1]=5.4 values contains: ";
copy(values.begin(),values.end(),output);
cout << endl;
return 0;
}