Hello World程序
我愿意在我的黄金时间在这里写下我的程序:一个hello world程序。这个程序将一个字符串传送到一个字符向量中,然后每次显示向量中的一个字符。向量就像是盛放变长数组的花园,大约所有STL容器中有一半是基于向量的,如果你掌握了这个程序,你便差不多掌握了整个STL的一半了。
//程序:vector演示一 //目的:理解STL中的向量
// #include "stdafx.h" -如果你使用预编译的头文件就包含这个头文件 #include <vector> // STL向量的头文件。这里没有".h"。 #include <iostream> // 包含cout对象的头文件。 using namespace std; //保证在程序中可以使用std命名空间中的成员。
char* szHW = "Hello World"; //这是一个字符数组,以”\0”结束。
int main(int argc, char* argv[]) { vector <char> vec; //声明一个字符向量vector (STL中的数组)
//为字符数组定义一个游标iterator。 vector <char>::iterator vi;
//初始化字符向量,对整个字符串进行循环, //用来把数据填放到字符向量中,直到遇到”\0”时结束。 char* cptr = szHW; // 将一个指针指向“Hello World”字符串 while (*cptr != '\0') { vec.push_back(*cptr); cptr++; } // push_back函数将数据放在向量的尾部。
// 将向量中的字符一个个地显示在控制台 for (vi=vec.begin(); vi!=vec.end(); vi++) // 这是STL循环的规范化的开始——通常是 "!=" , 而不是 "<" // 因为"<" 在一些容器中没有定义。 // begin()返回向量起始元素的游标(iterator),end()返回向量末尾元素的游标(iterator)。 { cout << *vi; } // 使用运算符 “*” 将数据从游标指针中提取出来。 cout << endl; // 换行
return 0; } |
push_back是将数据放入vector(向量)或deque(双端队列)的标准函数。Insert是一个与之类似的函数,然而它在所有容器中都可以使用,但是用法更加复杂。end()实际上是取末尾加一(取容器中末尾的前一个元素),以便让循环正确运行——它返回的指针指向最靠近数组界限的数据。就像普通循环中的数组,比如for (i=0; i<6; i++) {ar[i] = i;} ——ar[6]是不存在的,在循环中不会达到这个元素,所以在循环中不会出现问题。
|