• list对象指针与指针类型list


     1 #include <string>
     2 #include <cctype>
     3 #include <algorithm>
     4 #include <iostream>
     5 #include <list>
     6 using namespace std;
     7 class Base{
     8 public:
     9         int data;
    10         Base(int y):data(y){}
    11 };
    12 Base *pt(int x){
    13         Base *tmp = new Base(x);
    14         return tmp;
    15 }
    16 int main()
    17 {
    18 
    19         string str("ceshi andx 123 benjing");
    20         int x = 0;
    21         char first[6] = {0};
    22         char last[16] = {0};
    23         char mid[16] = {0};
    24         int ret = sscanf(str.c_str(), "%s%s%d%s", first, mid, &x, last);
    25         cout << ret <<  " first:" << first << " mid:" << mid << " x:" << x << " last:" << last << endl;
    26 
    27         //int指针类型的list
    28         list<int *> intptr;
    29         int *tmp = new int[5];
    30         for(int i=0; i<5; i++){
    31                 tmp[i] = i;
    32                 intptr.push_back(&tmp[i]);
    33         }
    34         list<int *>::iterator liter;
    35         for(liter  = intptr.begin(); liter != intptr.end(); ++liter)
    36                 cout << **liter << endl;
    37         for (std::list<int*>::iterator it = intptr.begin(); it != intptr.end();it++)
    38         {
    39                 //delete &it; //error
    40         }
    41         delete[] tmp;
    42 
    43         //以下list对象指针均建立在堆上,需要new/delete结合申请与释放
    44         //list元素为基本数据类型的对象指针      
    45         list<int> *ptr = new list<int>[2]; 
    46         ptr->push_back(2);
    47         ptr->push_back(3);
    48         list<int>::iterator iter;
    49         for(iter  = ptr->begin(); iter != ptr->end(); ++iter)
    50                 cout << *iter << endl;
    51         delete[] ptr;
    52         //list元素为自定义类型的对象指针
    53         list<Base> *pBase = new list<Base>[5];
    54         Base ba(4);
    55         Base bb(5);
    56         pBase->push_back(ba);
    57         pBase->push_back(bb);
    58         list<Base>::iterator iterb;
    59         for(iterb  = pBase->begin(); iterb != pBase->end(); ++iterb)
    60                 cout << (*iterb).data << endl;
    61         delete[] pBase;
    62 
    63 }
  • 相关阅读:
    C++的几个晦涩特性
    高效学习的工具Mnemosyne
    允许OSQA上传任意类型的文件
    新一代J2ME终端标准MSAfor CLDC——解读JSR248
    JAVA实现简单的HTTP服务器
    什么是Web 2.0
    Java 手机与空间制图服务(WMS)应用集成
    广西移动SP结算工作管理流程
    2007年Enterprise 2.0的10大趋势
    移动虚拟专用网的发展与未来应用
  • 原文地址:https://www.cnblogs.com/guxuanqing/p/7253890.html
Copyright © 2020-2023  润新知