Ⅰ C++應該怎麼學
大一學習的c++,工作之後也一直用的c++。
1. 涵蓋c++入門到精通的圖書列表
《The C programming language》必讀
《C++ Primer》,號稱是一本可以讓你從C或java程序員轉為一個真正的C++程序員的入門參考書,必讀。
《The C++ programming language》,C++之父,人稱B教主著作,在看過C++ primer後,應該可以跳章選讀。
《Think in c++》,網上說此書的中文版翻譯質量奇差,推薦看影印版,選讀。
《Effective c++》,類似 Effective java,講的是最佳實踐,程序員必讀。
《More effective c++》,上書的補充。
《The C++ standard library》,會寫C,不會用標准庫怎麼行。這就跟java程序員不衫攔會用java.util包一樣,必讀。
《Effective STL》,STL庫的最佳實踐。Effective C++作者又一力作,必讀。
《The annotated STL source》,STL源碼分析,這本書應該算是深入/精通類了,選讀。
《Generic programming and STL》,號稱C++編程里,就是跟模板,泛型打交道,那麼精通泛型是勢在必行。
《C++ Template》,C++模板編程,代碼復用的經驗之道,必讀。
《Exceptional C++》,跟Effective C++類似,屬於最佳實踐和難題解析,書中列出了許多應用場景和實例代碼供讀者揣摩,選讀。
《More Exceptional C++》,上書的補充。
《Exceptional C++ Style》,上上書的補充
《Inside The C++ Object Model》,有了上面這些書做鋪墊返塌遲,那麼終於可以讀此神書了。它會帶你游覽C++對象模型的底層實現機制。讀完此書,任何C++代碼看起來如同行雲流水,必讀。
2. 優秀的C/C++開源項目(閱讀代碼)
OS:linux kernel LVS、Linux應用程序
DB:Mysql、PostgreSQL
Complier:VM、GCC
Framework:OpenSip、SipProxy、
Net:ACE(Java Mina、Netty)、TCP/IP、HTTP協議棧
Cache:Memcached、Redis、
Library:STL(java util package)、Boost、Qt(UI)、
balance:Apache、Nginx
GSL
地址:https://github.com/microsoft/GSL
Boost文檔
地址:https://www.boost.org/doc/libs/
wxWidgets官網
地址:http://wxwidgets.org/
gtkmm
地址:https://www.gtkmm.org/en/
CopperSpice
地址:https://www.copperspice.com/
Qt
地址:https://www.qt.io/Eigen
地址:http://eigen.tuxfamily.org/index.php?title=Main_Page#Documentation
Plot utils
地址:https://www.gnu.org/software/plotutils/
Asio
地址:https://think-async.com/Asio/
POCO
地址:https://pocoproject.org/
abseil
地址:https://abseil.io/
C++開源庫匯總列表
地址:https://en.cppreference.com/w/cpp/links/libs
除了這些開源項目,也可以找一些免費的公開課,那這里也推薦漏李一個ACM金牌大佬講授的免費C++課程,可以去體驗一下:
學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣
已失效
3.C++語法講解
語言基礎
詳細介紹變數、表達式、語句、指針、數組、流程式控制制、函數、文件組織等。
抽象機制 - 面向對象編程
深入講解C++的抽象機制,封裝(類)、繼承、多態;操作符重載、函數對象、異常處理等。
模板 - 泛型編程
詳細介紹C++的模板機制,類模板、函數模板、模板特化等方面的內容。
4.深入c++面向對象
4.1、從C到C++
引用和指針:為什麼引用很重要
const關鍵字:為什麼const很重要
名字空間 (namespace)
4.2、深入C++對象
關於C++對象
內置類型的對象,如int、double對象,自定義類型的對象
對象類型的定義
關鍵字class和struct
類成員:成員函數和數據成員
靜態數據成員
成員的訪問控制
對象的size
關於this指針
onst成員函數、const究竟修飾什麼
mutable數據成員
4種特殊成員函數:constructor、destructor、 constructor、operator=
對象的構造、初始化列表
對象的析構
對象的復制
什麼情況下有必要顯式定義4種特殊函數
C++對象生命周
4.3、操作符重載
關於C++中操作符重載機制
重要操作符重載
算術運算:+, -, *, /, %, ++, --, ...
關系運算:>, <, ==, !=
下標存取:[ ]
函數調用:(),函數對象
類型轉換、單參數構造函數與隱式轉換、阻止隱式轉換 -- explicit關鍵字
友元與成員
4.4、面向對象基礎 -- 繼承
基類與派生類
再談對象的構造與析構
虛函數、純虛函數
派生類的內存布局、虛函數表
多態、多態類型、如何體現多態
虛析構、為什麼虛析構很重要
4.5、關於繼承更多的話題
多繼承
虛繼承與虛基類
對基類的訪問、public / protected / private繼承
Down cast:static_cast<>和dynamic_cast<>
運行期類型識別 (RTTI)
4.6、C++與面向對象設計
C++語言機制提供了完整的OOP支持
超越繼承
OOP若干法則和設計模式
5.C++泛型編程與STL
5.1、C++ 模板機制
5.2、STL 概要
5.3、STL容器
5.4、STL迭代
5.5、STL演算法
5.6、預與定義STL數對象
5.7、STL適配器
6. C++進階
《C++ Primer》
最新版本:第三版(第四版國外已上架, 國內一些網上書店也在預訂中)
適合有豐富C經驗,缺乏C++經驗的。不過我個人一直認為此書帶著過於強烈的C語言的痕跡,對於C++的學習未必是 好事。
《The C++ Programming Language》/《C++程序設計語言》
最新版本:第三版特別版
簡稱 TC++PL,有其他語言的豐富經驗的。(也有人簡稱之為「TCPL」,但需與另一本《The C Programmer Language》區分開來)
《Essential C++》
《Accelerated C++》
這兩本薄一些,都是不錯的選擇。《Accelerated C++》本人沒有讀過,從各方面的評價來看,完全值得推薦。
以上幾本書都有相應的中文版,而且翻譯的質量都不錯。上面的書未必都需要讀一遍,但無論如何,TC++PL是應該閱讀的。
《Effective C++》
最新版本:第二版(第三版國外已上架,國內一些網上書店也在預訂中)
簡稱EC。C++程序員必讀!很多時候,我們說C++聖經不是指TC++PL,而是這一本。《The Pragmatic Programmer》一書中寫到:「一旦你發現自己要參與C++項目的開發,趕快跑(不要走)到書店去購買Scott Mayer的《Effective C++》,可能還要《More Effective C++》」。
《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 編程規范》
個人認為此書應為C++程序員必備的案頭書。幾乎Effective系列和Exceptional系 列都在這里得到了總結。最新的模版、異常的業界經驗都在這里的到了體現。可能的唯一缺陷就是對一個新手而言,關於「為什麼這么做」的問題,解釋的不夠。
我 的看法是:如果你不理解其中的條款,記憶,並且照做;如果你理解其中的條款,我猜你一定會同意書中的觀點。我認為這本書中的內容至少在2009年以前都不 會過時,人們將廣為傳誦它制定的101條戒律。
還不知道他的簡稱,也許「101」會成為一個候選者?
提到《Effective C++》,那麼另外三本書一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新書《Exceptional C++ Style》也是值得一看的好書。
上 述幾本書,一本也不應該放過。
個人建議上述書籍按順序閱讀。並且,在將來反復閱讀這幾本書。
《Thinking in C++》/《C++編程思想》
這本書及其中文版傳言好壞都有,沒有認真看過,不做評價,如果確有興趣,不妨嘗試 一下該書。
以下幾本書基本上涉及的都是語言本身,大體上可以按照以下的順序閱讀。
《C++必知必會》
如果早一年,這本書將是重量級的,然而它被101和《Exceptional C++ Style》蓋過一頭。
《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序設計陷阱》
這又是一本我未曾讀過,而且廣受好評的書。
《STL 源碼剖析》
這本書我剛到手,就被人"借"走,以至於到現在也沒有看過。看過這本書的朋友,可以給一個合適的評價。
7. C++進階之數據結構基礎
這是所有編程語言中最應該學習的部分,程序組成的基礎之一。
順序存儲、鏈式存儲、循環鏈表;
雙向鏈表、棧(順序和鏈式)、隊列(順序和鏈式);
棧的應用、樹基本概念及遍歷、二叉樹;
排序演算法、並歸演算法、選擇、插入、快速、希爾。
以上這些內容你知道嗎?
8. C++進階之UI界面開發
掌握QT類庫構架,圖形界面開發模型;
掌握QT開發技巧,消息機制,圖形處理;
掌握QT網路編程,UDP,TCP使用方式;
掌握QT文件處理方式,序列化;
掌握QT在windows,linux,ios,android不同平台下的移植技術。
9. C++進階之Unix/Linux網路伺服器
掌握Unix/Linux平台開發方式;
熟練使用系統調用;
熟練Unix/Linux內存管理,進程,線程調度;
熟悉網路伺服器開發方式,熟練編寫TCP,UCP網路服務程序;
掌握同步/非同步IO模型在網路編程中的使用方式。
10.C++進階之資料庫開發
掌握SQL語言的實用技巧。Oracle,MySQL資料庫的使用方式。
如果你能熟練掌握以上列出的技能,具備解決復雜問題和技術難點的能力,而且你能獨立開發一些比較復雜的功能模塊,那麼很榮幸地告訴你,你已經達到中級水平,薪資過萬對你來說簡直是小菜一碟。
11.C++標准參考
C++ reference
地址:https://en.cppreference.com/w/
C++ Coding Standard
地址:http://www.possibility.com/Cpp/CppCodingStandard.html
Standard C++
地址:https://isocpp.org/
State of C++ Evolution
地址:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2597.html
The C++ Resources Network
地址:http://www.cplusplus.com/
Draft C++ Standard: Contents
地址:http://eel.is/c++draft/
需要資料私聊我
Ⅱ 《STL源碼分析》中如何priority_queue使用greater函數對象
首先查看手冊,priority_queue的定義如下:
template<classT, classContainer=std::vector<T>, classCompare=std::less<typenameContainer::value_type>>classpriority_queue;
然後繼續看模板的三個參數的說明
—————————以下直接摘抄的—————
Template parameters
T - The type of the stored elements.The behavior is undefined ifTis not the same type asContainer::value_type.(since C++17)
Container - The type of the underlying container to use to store the elements. The container must satisfy the requirements ofSequenceContainer, and its iterators must satisfy the requirements ofLegacyRandomAccessIterator. Additionally, it must provide the following functions with the usual semantics:
front()
push_back()
pop_back()
The standard containersstd::vectorandstd::dequesatisfy these requirements.
Compare - AComparetype providing a strict weak ordering.
—————————以上直接摘抄的—————
故可知,使用priority_queue需要給三個類來實現模板,其中第三個類就是那個比較函數,你問的,為什麼要priority_queue<int, vector<int>, greater<int> > q1;已經回答完畢。
另外,可以參考std::less的定義,更深入學習第三個類的含義。已附在引用部分,自行查閱。
std::priority_queuestd::less
PS:第一個那傢伙回答的什麼東西!我本來是不想回答的。。。看見那傢伙胡謅一氣,氣不過。
Ⅲ C 語言的庫函數和C++ STL要學到什麼程度呀 謝過先
c庫如果只是初級應用,到看到函數名就知道怎麼用
如果要寫底層的,那麼除了知道函數,還要知道本身的底層實現和優搜虧缺點
stl跟c庫是不同的,那是c++的東西,這玩意要知道所有的容器和泛型演算法,非一朝一夕能夠掌握的,建議看一下stl源碼解析和c++編程新思維。如果要進階,就叢漏哪要看一下boost的stl庫是怎麼寫的,這些都非滲碼常耗時的。
另外msdn裡面沒有stl的東西
Ⅳ #include <cstdio>有什麼用
cstdio就是將stdio.h的內容用C++的頭文件形式表現出來。
stdio.h是老式的C,C++頭文件,cstdio是標准 C++(STL),且cstdio中的函數都是定義在一個名字空源困間std裡面的。
如果要調用這個名字空間的函數,必須得加std::或者在文件中聲明use namespace std
(4)cstl源碼怎麼用擴展閱讀:
stdio 就是指 「standard input & output"(標准輸入輸出)
所以,源代碼中如用到標准輸入輸出函數時,就要包含這個頭文件!
例如c語言中判氏的printf("%d",i);雹沖念scanf("%d",&i);等函數。
引用方法
#include<stdio.h>
Ⅳ 如何在Android平台下編譯帶STL的C++程序
1、下載最新的Android SDK,下載Android NDK R9C版本。
2、如是在windows平台下需要在PATH中設置環境變數,以便於直接調用NDK來編譯C++程序。
將如下兩個路徑加入到PATH中:<ANDROID_NDK>;<ANDROID_SDK>\platform-tools
其中<NDK>為你的計算機上Android NDK的安裝路徑,<SDK>為Android SDK的安裝路徑
如果在你的SDK下沒有platform-tools目錄,則在Eclipse中按照如下截圖進行操作:
3、為要編譯的C++程序建一個文件夾,如myproject。在myproject下再建一個jni文件夾,將源代碼放在這個文件夾下,myproject/jni。
mkdir myproject
mkdir myproject/jni
4、在jni文件夾下建兩個分別名為:android.mk和
application.mk文件。android.mk類以於C++程序的makefile,application.mk則指明當前程序依賴的庫。
android.mk的示例為:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_first_app #指明C++程序編譯出的可執行程序的名稱
LOCAL_SRC_FILES:= my_first_app0.cpp \ #指明要編譯的源文件,可以有很多個
my_first_app1.cpp\
…
include$(BUILD_EXECUTABLE)#表明編譯的是可執行程序
/**************************************************************************/
application.mk的示例為:(在application.mk中指明STL庫)
APP_STL:= gnustl_static
這里選STL庫時有四個選項:
system - 使用默認最小的C++運行庫,這樣生成的應用體積小,內存佔用小,但部分功能將無法支持
stlport_static - 使用STLport作為靜態庫,這項是Android開發網極力推薦的
stlport_shared - STLport 作為動態庫,這個可能產生兼容性和部分低版本的Android固件,目前不推薦使用。
gnustl_static - 使用 GNU libstdc++ 作為靜態庫
默認情況下STLPORT是不支持C++異常處理和RTTI,所以不要出現 -fexceptions 或 -frtti ,如果真的需要可以使用gnustl_static來支持標准C++的特性,但生成的文件體積會偏大,運行效率會低一些。
支持C++異常處理,在Application.mk中加入 LOCAL_CPPFLAGS +=
-fexceptions這句,同理支持RTTI,則加入LOCAL_CPPFLAGS +=
-frtti,這里再次提醒大家,第二條說的使用gnustl靜態庫,而不是stlport。
強制重新編譯 STLPort ,在Application.mk中加入 STLPORT_FORCE_REBUILD := true 可以強制重新編譯STLPort源碼,由於一些原因可能自己需要修改下STLPort庫,一般普通的開發者無需使用此項
5、打開控制台(cmd),在myproject目錄下用android的NDK build工具編譯C++程序:
cd myproject
$NDK/ndk-build
如果程序沒錯的話,會編譯出android的可執行程序,位置在myproject/libs/armeabi/my_first_app
8、將編譯出來的my_first_app放到手機或是模擬器上運行。在windows的cmd上運行adb.exe。
用adb.exe將my_first_app程序push到手機或模擬器的/data/local目錄上:
adb.exepush myproject\libs\armeabi\my_first_app /data/local。
9、通過adb,在手機上運行my_frist_app:
在cmd上運行:
adb.exe shell
由此進入到手機的linux終端上,接下來再更改my_first_app的許可權使其可以運行:
cd /data/local
chmod 777 my_first_app
./my_first_app//如果沒錯的話,這一步即可運行my_first_app
至此在android上編譯含STL的C++程序的過程結束。
Ⅵ 誰來解釋下c++中的STL用來做什麼的,推薦點學習資料
關於STL網上資料還是很多的,以下是對初學者較為好理解的:
STL(Standard Template Library),即標准模板庫,是一個具有工業強度的,高效的C++程序庫。它被容納於C++標准程序庫(C++ Standard Library)中,是ANSI/ISO C++標准中最新的也是極具革命性的一部分。該庫包含了諸多在計算機科學領域里所常用的基本數據結構和基本演算法。為廣大C++程序員們提供了一個可擴展的 應用框架,高度體現了軟體的可復用性。這種現象有些類似於Microsoft Visual C++中的MFC(Microsoft Foundation Class Library),或者是Borland C++ Builder中的VCL(Visual Component Library)
從邏輯層次來看,在STL中體現了泛型化程序設計的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概念(concept),模型(model),容器 (container),演算法(algorithmn),迭代子(iterator)等。與OOP(object-oriented programming)中的多態(polymorphism)一樣,泛型也是一種軟體的復用技術。
從實現層次看,整個STL是以一種類型參數化(type parameterized)的方式實現的,這種方式基於一個在早先C++標准中沒有出現的語言特性--模板(template)。如果查閱任何一個版本 的STL源代碼,你就會發現,模板作為構成整個STL的基石是一件千真萬確的事情。除此之外,還有許多C++的新特性為STL的實現提供了方便。
沒有C++語言就沒有STL,這么說毫不為過。一般而言,STL作為一個泛 型化的數據結構和演算法庫,並不牽涉具體語言(當然,在C++里,它被稱為STL)。也就是說,如果條件允許,用其他語言也可以實現之。這里所說的條件,主 要是指類似於"模板"這樣的語法機制。如果你沒有略過前一節內容的話,應該可以看到,Alexander Stepanov在選擇C++語言作為實現工具之前,早以採用過多種程序設計語言。但是,為什麼最終還是C++幸運的承擔了這個歷史性任務呢?原因不僅在 於前述那個條件,還在於C++在某些方面所表現出來的優越特性,比如:高效而靈活的指針。但是如果把C++作為一種OOP(Object- Oriented Programming,面向對象程序設計)語言來看待的話(事實上我們一般都是這么認為的,不是嗎?),其功能強大的繼承機制卻沒有給STL的實現幫上 多大的忙。在STL的源代碼里,並沒有太多太復雜的繼承關系。繼承的思想,甚而面向對象的思想,還不足以實現類似STL這樣的泛型庫。C++只有在引入了 "模板"之後,才直接導致了STL的誕生。這也正是為什麼,用其他比C++更純的面向對象語言無法實現泛型思想的一個重要原因。當然,事情總是在變化之 中,像Java在這方面,就是一個很好的例子,jdk1.4中已經加入了泛型的特性。
此外,STL對於C++的發展,尤其是模板機制,也起到了促進作用。比如: 模板函數的偏特化(template function partial specialization),它被用於在特定應用場合,為一般模板函數提供一系列特殊化版本。這一特性是繼STL被ANSI/ISO C++標准委員會通過之後,在Bjarne和Stepanov共同商討之下並由Bjarne向委員會提出建議的,最終該項建議被通過。這使得STL中的一 些演算法在處理特殊情形時可以選擇非一般化的方式,從而保證了執行的效率。STL是最新的C++標准函數庫中的一個子集,這個龐大的子集占據了整個庫 的大約80%的分量。而作為在實現STL過程中扮演關鍵角色的模板則充斥了幾乎整個C++標准函數庫.
在STL還沒有降生的"黑暗時代",C++程序員要完成前面所提到的那些功能,需要做很多事情(不過這比起C程序來,似乎好一點),程序大致是如下這個樣子的:
#include <stdlib.h>
#include <iostream.h>
int compare(const void *arg1, const void *arg2);
void main(void)
{
const int max_size = 10; // 數組允許元素的最大個數
int num[max_size]; // 整型數組
// 從標准輸入設備讀入整數,同時累計輸入個數,
// 直到輸入的是非整型數據為止
int n;
for (n = 0; cin >> num[n]; n ++);
// C標准庫中的快速排序(quick-sort)函數
qsort(num, n, sizeof(int), compare);
// 將排序結果輸出到標准輸出設備
for (int i = 0; i < n; i ++)
cout << num[i] << "\n";
}
// 比較兩個數的大小,
// 如果*(int *)arg1比*(int *)arg2小,則返回-1
// 如果*(int *)arg1比*(int *)arg2大,則返回1
// 如果*(int *)arg1等於*(int *)arg2,則返回0
int compare(const void *arg1, const void *arg2)
{
return (*(int *)arg1 < *(int *)arg2) ? -1 :
(*(int *)arg1 > *(int *)arg2) ? 1 : 0;
}
試著使用一下STL,看看效果如何。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void main(void)
{
vector<int> num; // STL中的vector容器
int element;
// 從標准輸入設備讀入整數,
// 直到輸入的是非整型數據為止
while (cin >> element)
num.push_back(element);
// STL中的排序演算法
sort(num.begin(), num.end());
// 將排序結果輸出到標准輸出設備
for (int i = 0; i < num.size(); i ++)
cout << num[i] << "\n";
}
這個程序的主要部分改用了STL的部件,看起來要比第一個程序簡潔一 點,你已經找不到那個討厭的compare函數了。這個程序是足夠健壯的。
下面我們來看看這個絕版的C++程序。
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
void main(void)
{
typedef vector<int> int_vector;
typedef istream_iterator<int> istream_itr;
typedef ostream_iterator<int> ostream_itr;
typedef back_insert_iterator< int_vector > back_ins_itr;
// STL中的vector容器
int_vector num;
// 從標准輸入設備讀入整數,
// 直到輸入的是非整型數據為止
(istream_itr(cin), istream_itr(), back_ins_itr(num));
// STL中的排序演算法
sort(num.begin(), num.end());
// 將排序結果輸出到標准輸出設備
(num.begin(), num.end(), ostream_itr(cout, "\n"));
}
在這個程序里幾乎每行代碼都是和STL有關的(除了main和那對花 括弧,當然還有注釋),並且它包含了STL中幾乎所有的各大部件(容器container,迭代器iterator, 演算法algorithm, 適配器adaptor)
推薦資料 <<C++ Templates 中文版>>
《泛型編程與-STL中文版》
《C++ STL 中文版》
《Effective.STL中文版》
Ⅶ VC++中STL的容器都有哪些,怎麼用。
1、順序容器:vector,list,deque語法都一樣,即:C<T>
c(n);系統會根據T類型的不同自動的對容器中的n個項進行初始化;
2、關聯容器:map,set,multimap,multiset不支持上面的創建方
法。關聯容器不能通過容器大小來定義,即是無法在定義關聯容器時指明其大小。因為這樣在自動初始化時,無擾塌物法知道鍵所對應的值是什麼,比
如:map<string,int>
m;總不能初始化為空字衫差符串""鍵對應值0吧?就算第一個可以,但第二個呢?map中的鍵不能重復,那咋初始化第二個。
2、另外:緩液stack不是容
器,只是順序容器適配器。類似的還有:queue,priority_queue
Ⅷ 怎麼查看C++庫函數的源碼
如果你想看stl裡面的源碼可以去SGI 下載源代碼,Download STL source code
去這個網站下載源碼,sgi版本的stl代碼一般來說中含可讀性比較好,我正在看。
sort函數的代碼在stl_algo.h文件里。侯捷有本書叫做《stl源碼剖析》
如果是vs2008或者2010可以在Microsoft Visual Studio 10.0\VC\crt\src查看
另信悄外還有本書叫做《c標准庫》但是現在好像絕版了。
也可以去這個找:在glibc庫里,可去其官方網站下載(最新是2。7的),然賣坦笑後查找一下你要的函數。
Ⅸ C++ STL for_each 的用法
for_each第三個參數傳入的是函數名稱,通過模板生成代碼後的函數指針,for_each需要調用,可以看看STL的for_each函橡液陵數的源碼。
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std;
void print(int a)
{
cout << a <<"\t";
}
class myInt
{
public:
void operator()(int x)
{
cout << x << "\t";
}
};
template<int thevalue>
void add(int &ele)
{
ele += thevalue;
}
class AddValue
{
private :
int thevalue;
public:
AddValue(int va) : thevalue(va)
{
}
void operator()(int & element)
{
element += thevalue;
}
};
int main()
{
/*
vector<string> ve;
(istream_iterator<string>(cin),
istream_iterator<string>(),
back_inserter(ve));
sort(ve.begin(),ve.end());
(ve.begin(),ve.end(),
ostream_iterator<string>(cout,"\t"));
*/
vector<int> ve;
for(int i = 0; i< 9; i++)
{
ve.push_back(i);
}
for_each(ve.begin(),ve.end(),print);
cout <<梁戚 endl;
for_each(ve.begin(),ve.end(),myInt());
cout << endl;
cout << "埋李after add --------" << endl;
for_each(ve.begin(),ve.end(),add<10>);
for_each(ve.begin(),ve.end(),print);
cout << endl;
for_each(ve.begin(),ve.end(),AddValue(10));
for_each(ve.begin(),ve.end(),print);
cout << endl;
for_each(ve.begin(),ve.end(),AddValue(*ve.begin()));
for_each(ve.begin(),ve.end(),print);
cout << endl;
}