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 }
时间: 2024-10-19 11:18:34

list对象指针与指针类型list的相关文章

【C++】C++问题——类模板分离编译、函数对象、智能指针

C++类模板的分离编译 过去很多类模板都是整个类连同实现都放在一个头文件里,像STL库就是遵循这样的策略来实现类模板的.现在的标准正试图矫正这种局面. 在实现中又许多函数模板.这意味着每个函数都必须包含模板声明,并且在使用作用域操作符的时候,类的名称必须通过模板变量来实例化. 比如一个operator=的代码: template <typename Object> const MemoryCell <Object> & MemoryCell<Object>::o

C++ 如何从指针中得到类型或引用

C++标准语法中我们可以通过  * 来定义指针 &来指定引用 如 typedef int * _INT_PTR; 我们定义了一个指针 typedef int& _INT_REF; 我们定义了一个引用 那我们有没办法通过一个已知的指针或引用来定义一个原始类型呢? typedef *_INT_PTR  _INT? 这似乎不符合语法. 那你可能会问这么奇怪的需求有存在的需要吗? 当你操作别人的数据时,对方由于一些原因只给你提供了指针类型(如后本人所碰到的),你就有可能有这样的需求. 这样的需求有

了解指针(4)-- 指针和结构类型

我们之前介绍了指针和数组的关系.这一节介绍指针和结构类型的关系.我们可以声明一个指向结构类型对象的指针. 例1: struct MyStruct { int a; int b; int c; }; struct MyStruct ss={20,30,40};        //创建结构对象 ss, 并把 ss 的成员初始化为 20, 30 和 40. struct MyStruct *ptr=&ss;        //创建指向这种结构的指针. int *pstr=(int*)&ss;  

不要伤害指针(3)--指针和结构类型的关系

可以声明一个指向结构类型对象的指针. struct MyStruct { int a; int b; int c; }; struct MyStruct ss = {20,30,40};//声明了结构对象ss,并把ss 的成员初始化为20,30 和40. struct MyStruct *ptr = &ss;//声明了一个指向结构对象ss 的指针.它的类型是MyStruct *,它指向的类型是MyStruct. int *pstr = (int*)&ss;//声明了一个指向结构对象ss 的

C++手稿:STL中的函数对象与函数指针

先来感受一下C++中的函数对象和函数指针: template<typename T> void printer(int a, int b, T func){ cout<<func(a, b)<<endl; } 在STL中定义了很多像上面这样的模板,这里的T是一个可调用(实现了括号运算符)的东西. 这使得我们在使用模板时可以指定一个计算策略,它可以是函数对象,也可以是函数指针. Less<int>便是一个常见的函数对象,常用来配置容器或算法.<funct

C++ 指针(不论什么一个指针本身的类型都是unsigned long int型)

1.指针数组: 即 数组的元素是指针型; 例:int*pa[2]; 明明是一维的指针数组.竟当作二维数组用. [cpp] view plain copy //利用指针数组存放单位矩阵 #include <iostream> using namespace std; void main() { int line1[]={1,0,0}; //声明数组,矩阵的第一行 int line2[]={0,1,0}; //声明数组,矩阵的第二行 int line3[]={0,0,1}; //声明数组.矩阵的第

C语言 详解多级指针与指针类型的关系

//通常意义上,指针类型指的是‘指针值’的类型,而不是‘指针’的类型 //V推论①:变量的步长只与变量的类型有关 //普通变量名是一段内存空间的标识,普通变量名代表的是一段内存空间, //对于复杂变量(例如指针):通常的指针的步长准确来说是指‘指针值’的步长,而不是指‘指针本身’的步长,指针本身的步长永远是4, //我们通常说的指针类型往往指的是‘指针值’的类型,,而不是‘指针’的类型 //而指针类型就是一个占4个字节大小内存空间的一种类型(从来没有人定义过指针类型,人们定义的都是‘指针值’的类

iOS 关于僵尸对象和僵尸指针的那些事儿

引言 提到僵尸就感到一种恐怖,大家都知道“僵尸”是没有生命的,但是它确实是一种存在的类似生命体的一种生物.哈哈,当然本文的重点不是讨论“僵尸”,而是有关于ios当中经常遇到的僵尸指针(Zombie Pointer)和僵尸对象(Zombie Object). 野指针 先来介绍一下野指针,C/C++中对野指针的定义为:野指针就是指向垃圾内存的指针,这个指针地址不是NULL.如果给一个指针赋值为NULL,那么该指针就是一个空指针,可以用if语句判读.但是对于野指针不能用if语句判断. 野指针产生的原因

测试对象销毁后指针是否还可以使用

<span style="font-size:18px;">// 04-测试对象销毁后指针是否还可以使用 // // Created by wanghy on 15/8/13. // // //为了直观,直接将.m和.h文件写在main.m中. #import <Foundation/Foundation.h> //定义 person类 包含 姓名,年龄和性别 @interface person : NSObject { @public NSString * _

CPP-STL:用vector保存对象时保存指针的优点, 以及reserve的使用(转)

代码1 [cpp] view plaincopy #include <vector> #include <stdio.h> class A { public: A() { printf("A()/n"); } ~A() { printf("~A()/n"); } A(const A& other) { printf("other/n"); } }; int main() { A a; A b(a); A c = a