科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件STL实践指南之简介

STL实践指南之简介

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这是一篇指导您如何在Microsoft Visual Studio下学习STL并进行实践的文章.

作者:Jeff Bogan 来源:vchelp 2007年10月19日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
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]是不存在的,在循环中不会达到这个元素,所以在循环中不会出现问题。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章