标题:求教一个vector<string>指针问题
取消只看楼主
dong820729
Rank: 2
等 级:论坛游民
帖 子:11
专家分:29
注 册:2009-12-21
结帖率:50%
已结贴  问题点数:20 回复次数:1 
求教一个vector<string>指针问题
该题目为c++primer的习题:编写程序定义一个vector对象,其每个元素都是指向string类型的指针,读取该vector对象,输出每个string的内容及其相应的长度。

我的程序如下:

#include<iostream>
#include<string>
#include<vector>
#pragma warning(disable:4786)
using namespace std;
int main()
{
    string str;
    vector<string*> psvec;//为何这里用string*类型,不能用vector<string>*呢?
    while(cin>>str)
    {
        string *ps=new string;//为何这里要动态创建string,不能直接psvec->push_back(str)?
        *ps=str;//这里为何用*ps=str,不能使用ps=&str?
        psvec.push_back(ps);/*在这里我们把ps给psvec,那么psvec保存的应该是string*类型,
                              下面的for循环显然使用了该类型的begin(),end()操作,
                              为什么可以这样用?*/
    }
    for(vector<string*>::iterator iter=psvec.begin();iter!=psvec.end();++iter)
    {
        cout<<**iter<<" "<<(*iter)->size()<<endl;
        delete *iter;/*1.为何要释放*iter?
                       2.为何不是释放iter?
                       3.我们动态创建的是ps,为何不是释放ps?
                       4.我在网上找的答案是在这个for循环外另起一个同样的循环释放*iter,我在这里释放有何不可?
                         我在这里释放,编译也可通过,为何?*/
    }
    return 0;
}


此题给我的问题颇多,希望各位大神能给出详细解答!
先行谢过!
搜索更多相关主题的帖子: string 指针 vector 
2010-03-01 16:24
dong820729
Rank: 2
等 级:论坛游民
帖 子:11
专家分:29
注 册:2009-12-21
得分:0 
还有些疑惑:ps在这里应该是一个string类型的动态指针,那么*ps=str表示对ps解引用操作保存的是str的值,而ps=&str表示ps保存的是str的地址,那么对ps进行解引用应该也是得到的str的值啊。所以我不明白,为什么只能用*ps=str而不能使用ps=&str。事实上,我试过把*ps=str改成ps=&str,确实出现一堆错误,请问这两者有何区别,谢谢!
2010-03-02 09:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-298315-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.267792 second(s), 10 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved