标题:向量容器的问题
只看楼主
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
 问题点数:0 回复次数:2 
向量容器的问题
下面的程序我想输出a1的值该怎么写呢?
#include<vector>
#include<iostream>
using namespace std;
int i=0;
int j=0;
class Cdemo
{
public:
    Cdemo():str(NULL)
    {
        cout<<"constructor:"<<i++<<endl;
    };

    Cdemo(const Cdemo &cd)
    {
        cout<<"copy constructor:"<<i++<<endl;
        this->str=new char[strlen(cd.str)+1];
        strcpy(str,cd.str);
    };

    ~Cdemo()
    {
        if(str)
        {
            cout<<"destructor:"<<j++<<endl;
            delete [] str;
        }
    };

    char *str;
    };

    int main()
    {
        Cdemo d1;
        d1.str=new char[32];
        strcpy(d1.str,"trend micro");
        vector<Cdemo> *a1=new vector<Cdemo>();
        a1->push_back(d1);
    //    delete a1; vector 对象指针能够自动析构
        cout<<d1.str<<endl;
        cout<<a1<<endl;   //只输出a1的指针
    
        return 0;
    }
搜索更多相关主题的帖子: 向量 容器 
2008-09-27 12:24
无缘今生
Rank: 2
等 级:新手上路
威 望:3
帖 子:523
专家分:7
注 册:2007-6-25
得分:0 
vector支持像普通数组一样的随机访问:
例:
vector<int> vc ;
vc.push_back(12);
vc.push_back(4);
vc.push_back(78);

cout << vc[2] << " " << vc[0] << endl; //输出结果是78 12

       vector<Cdemo> *a1=new vector<Cdemo>();
        a1->push_back(d1);
    //    delete a1; vector 对象指针能够自动析构
        cout<<d1.str<<endl;
        cout<<a1<<endl;   //只输出a1的指针
你这里直接输出a1肯定是不行的.它是一个指针,结果应该是一个地址吧?
最后一句可以改成这样:
       cout << a1[0] << endl;  //前提是你的Cdemo类实现了对 << 的重载

时不再来!!!
2008-09-27 17:15
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
2楼正解啊...
无论是不是指针,关键是对<<重载...

2008-09-27 20:44



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




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

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