C++编程思想 第1卷 第2章 vector

  string对象输入数据而不关心需要多少存储空间。但如果把每一行读入一个string对象,
我们就不知道需要多少string--只有读完整个文件后才知道,我们需要某种能够自动扩展
的存放,用以包含所需数量的string对象。
  有某种容器对象,能容纳所有的各种对象。
  vector类是一个模板,可以有效地用于不同的类型。
  用模板可以创建任何事物的类。
  vector末尾增加一个新元素,用push_back()。
  Insert(),在容器中间加入新元素。
  通过下标寻找数组的元素,vector可以像数组那样。

  << >> 用于iostream,操作符重载用于vector


//: C02:Fillvector.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Copy an entire file into a vector of string
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int main() {
  vector<string> v;
  ifstream in("Fillvector.cpp");
  string line;
  while(getline(in, line))
    v.push_back(line); // Add the line to the end
  // Add line numbers:
  for(int i = 0; i < v.size(); i++)
    cout << i << ": " << v[i] << endl;
  getchar();
} ///:~


  大部分与前一个程序相同,打开文件并每次将一行读进string对象。 不同的是,这些string
对象被对象压入vector v的尾部。 while循环完成是,整个文件在v内,并驻留内存


  while语句之后是for循环语句,与while类似,不过多了一些控制条件。for之后的括号内是
控制表达式,这和while语句相同。



输出
0: //: C02:Fillvector.cpp
1: // From Thinking in C++, 2nd Edition
2: // Available at http://www.BruceEckel.com
3: // (c) Bruce Eckel 2000
4: // Copyright notice in Copyright.txt
5: // Copy an entire file into a vector of string
6: #include <string>
7: #include <iostream>
8: #include <fstream>
9: #include <vector>
10: using namespace std;
11:
12: int main() {
13:   vector<string> v;
14:   ifstream in("Fillvector.cpp");
15:   string line;
16:   while(getline(in, line))
17:     v.push_back(line); // Add the line to the end
18:   // Add line numbers:
19:   for(int i = 0; i < v.size(); i++)
20:     cout << i << ": " << v[i] << endl;
21: } ///:~

猜你喜欢

转载自blog.csdn.net/eyetired/article/details/80574602