标准库概览

来源:互联网 发布:哪里可以下载外汇数据 编辑:程序博客网 时间:2024/05/31 13:15

1.标准库(Standard Template Library)
C++中泛形编程的基础
2.Hello,world!
最小的C++程序是
 int main() { }
// Disassmable code.
00401010   push        ebp
00401011   mov         ebp,esp
00401013   sub         esp,40h
00401016   push        ebx
00401017   push        esi
00401018   push        edi
00401019   lea         edi,[ebp-40h]
0040101C   mov         ecx,10h
00401021   mov         eax,0CCCCCCCCh
00401026   rep stos    dword ptr [edi]
00401028   pop         edi
00401029   pop         esi
0040102A   pop         ebx
0040102B   mov         esp,ebp
0040102D   pop         ebp
0040102E   ret
 #include <iostream>
 Int main()
 {
  Std::cout<<”Hello,world!/n”;
 }
// Disassmable code.
1:    #include <iostream>
2:
3:    int main()
4:    {
00401360   push        ebp
00401361   mov         ebp,esp
00401363   sub         esp,40h
00401366   push        ebx
00401367   push        esi
00401368   push        edi
00401369   lea         edi,[ebp-40h]
0040136C   mov         ecx,10h
00401371   mov         eax,0CCCCCCCCh
00401376   rep stos    dword ptr [edi]
5:        std::cout<<"Hello,world!/n";
00401378   push        offset string "Hello,world!/n" (0042f01c)
0040137D   push        offset std::cout (00433ea0)
00401382   call        @ILT+140(std::operator<<) (00401091)
00401387   add         esp,8
6:    }
0040138A   pop         edi
0040138B   pop         esi
0040138C   pop         ebx
0040138D   add         esp,40h
00401390   cmp         ebp,esp
00401392   call        __chkesp (00408d80)
00401397   mov         esp,ebp
00401399   pop         ebp
0040139A   ret
3.标准容器
一个以保存一批对象为主要用途的类通常被称为一个容器。
[a]向量(vector)
Vector是一种能赋值的简单对象。
Example:
 void f(vector<Entry>& v)
{
  vector<Entry> v2=phone_book;
  v=v2;
  // …
 }
对vector赋值涉及到复制其中的所有元素。当向量里存在许多元素时,这种看起来无害的赋值和初始化的代价也可能很高。
[b]表(list)
[c]映射(map)
4.标准库算法
5.迭代器
[a]迭代器和I/O
[1] ostream_iterator<string>  oo(cout);
 istream_iterator<string> ii(cin);
 istream_iterator<string> eos;  //表示输入的结束。
[2] int main()
 {
  *oo=”Hello,”;  // Meaning “ cout<<”Hello,”
  ++oo;
  *oo=”world!/n”;
 }
[3]从输入流读入Hello,world!。而后再次将它写出去:
 int main()
 {
  string s1=*ii;
  ++i;
  string s2=*ii;
  cout<<s1<<’ ‘<<s2<<”/n”;
 }
实际中,istream_iterator和ostream_iterator并不是想提供人们直接使用的,它们主要是为了给算法提供参数。
[4]Function: 读入一个文件,对所读的东西排序,去掉重复,最后将结果写入另一个文件。
int main()
{
 string from, to;
 cin>>from>>to;      //取得源文件名和目标文件名;
     
 ifstream is(from.c_str());     //输入流(c_str());
 istream_iterator<string> ii(is);   //流的输入迭代器;
 istream_iterator<string> eos;    //输入的哨兵;

 vector<string> b(ii,eos);     //b是一个向量,用输入进行初始化;
 sort(b.begin(),b.end());     //对缓冲区排序;

 ofstream os(to.c_str());     //输出流;
 ostream_iterator<string> oo(os,"/n");  //流的输出迭代器;

 unique_copy(b.begin(),b.end(),oo);  //从缓冲区复制到输出;
          //并去掉重复的值

 return !is.eof()||!os;      //返回错误信息;
}
6.遍历和谓词
用于控制算法的函数被称为谓词。
/*************************************End*************************************/

原创粉丝点击