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 ⁢ //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 }