游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2396|回复: 5

请教关于vector标准库的问题

[复制链接]

14

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2007-5-27 14:15:00 | 显示全部楼层 |阅读模式
问题是这样的,/读入一段文本到vector对象,每个单词存储为vector中的一个元素。

//把vector对象中每个单词转化为大写字母。

//输出vector对象中转化后的元素,每8个单词为一行输出

,作者的答案是这样的

#include <iostream>

#include <string>

#include <vector>

#include <cctype>

using namespace std;

int main()

{

    vector<string> svec;

    string str;

    // 读入文本到vector对象

    cout << "Enter text(Ctrl+Z to end):" << endl;

    while (cin>>str)

        svec.push_back(str);

    //将vector对象中每个单词转化为大写字母,并输出

    if (svec.size() == 0) {

        cout << "No string?!" << endl;

        return -1;

    }

    cout << "Transformed elements from the vector:"

         << endl;

    for (vector<string>::size_type ix = 0; ix != svec.size(); ++ix) {//ix是svec的下标
for (string::size_type index = 0; index != svec[ix].size(); ++index)
      

            if (islower(svec[ix][index]))

                //单词中下标为index的字符为小写字母

                svec[ix]= toupper(svec[ix][index]);

        cout << svec[ix] << " ";

        if ((ix + 1) % 8 == 0)//每8个单词为一行输出

            cout << endl;

    }

    return 0;

}
由于我看过的书不同,概念上有一些问题,对于循环部分的
for (vector<string>::size_type ix = 0; ix != svec.size(); ++ix) {//ix是svec的下标
for (string::size_type index = 0; index != svec[ix].size(); ++index)
if (islower(svec[ix][index]))
                svec[ix]= toupper(svec[ix][index]);
为什么要定义成svec[ix][index]呢?
代表着是2维下标?如果我输入4个单词,string对象通过插入(push_back)读取单词,但是实际上下标是对每个字符进行操作,也就是说,svec[ix]代表着单个的字符的输出,而svec[ix][index]代表着对整个单词的获取?index到底意味着什么?

本人是学入很浅,请指点

      

           

16

主题

280

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
发表于 2007-5-27 15:17:00 | 显示全部楼层

Re: 请教关于vector标准库的问题

svec[ix][index]是vector<string>的第ix个string的第index个字符
[em19]我也在看C++Primer [em15]

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-5-27 16:10:00 | 显示全部楼层

Re:请教关于vector标准库的问题

可以把vector<string> 理解成为一个char类型的二维数组,今天上午刚悟出来的

12

主题

217

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2007-5-27 17:03:00 | 显示全部楼层

Re:请教关于vector标准库的问题

.........

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2007-5-27 18:24:00 | 显示全部楼层

Re:请教关于vector标准库的问题

svec这样写就是获得第几个string对象,因为每个数组的元素就是一个string,
而svec[j]就是获得每个string中单个字符,这样写可能就清楚一些:

string s = svec;
char c = s[0];

因为string对象也有[]操作符的呀!

14

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2007-5-27 20:59:00 | 显示全部楼层

Re:请教关于vector标准库的问题

多谢各位,CuriousZhen,你也在看C++Primer 吗?哈哈,C++Primer 真是本好书啊,可以加我QQ吗?
249041426
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 08:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表