rt 我昨天刚开始学sjtpf 见我上一个帖子
今天我详细介绍下列表
首先列表有一堆成员函数
像list::modify list::at list::sub list::length等
还有之前不是提了list有两种选择 长度可变和不可变
不可变的略过 讲一讲可变
可变长度默认是50,然后如果你访问了51(当然你访问大于等于50的他都会这么干),它就会把整个列表复制到长度为100的新列表里面 所以list还有一个成员函数叫list::copy
一样的,你如果访问101,它会复制到一个长度为200的列表里面
就是一直乘以2直到列表长度大于要访问的下标
这个管它叫自动扩容
需要提一嘴 列表占用的内存是连续的 这就意味着列表同一个下标在复制后内存地址可能会不同
如果创建一个指向特定下标的指针,在列表复制后理应失效
但是事实不是这样的
原故是指针的实现,它指向的不是内存地址,其实它记录的是一个字符串
问题来了,在跨函数的指针中,它应当怎么办呢?
这里得提sjtpf的另一个特性,你只需要这么写:
main::someVar就可以在任何地方访问main里面的someVar
当然你在mian里面这么写也不是不行,你甚至可以写this::someVar 但是没必要
然后对于每一个对象它会有一个map 记录内部的对象的地址
这是可以嵌套的 比如main里面有个dog,那么在第一层map里面main指向的地址是一个map 这个map里面dog指向的是第三个map
等等
反正sjtpf会处理好这些的
还得提一嘴类 类其实是个特殊的对象 每当实例化一个类时 其实就是对那个类的拷贝
好了 说的太远了 现在是指针的第二个问题
指针其实可以指向有参数的函数 也可以只指向函数
也就是说 a (“a”,print)-^;和a2 print-^;其实都合法
调用a会直接输出“a”,但是a2必须这么写(“a”,a2);才行
反正指针其实就是把指向的东西不管三七二十一全部扔到调用它的地方
太神奇了
今天我详细介绍下列表
首先列表有一堆成员函数
像list::modify list::at list::sub list::length等
还有之前不是提了list有两种选择 长度可变和不可变
不可变的略过 讲一讲可变
可变长度默认是50,然后如果你访问了51(当然你访问大于等于50的他都会这么干),它就会把整个列表复制到长度为100的新列表里面 所以list还有一个成员函数叫list::copy
一样的,你如果访问101,它会复制到一个长度为200的列表里面
就是一直乘以2直到列表长度大于要访问的下标
这个管它叫自动扩容
需要提一嘴 列表占用的内存是连续的 这就意味着列表同一个下标在复制后内存地址可能会不同
如果创建一个指向特定下标的指针,在列表复制后理应失效
但是事实不是这样的
原故是指针的实现,它指向的不是内存地址,其实它记录的是一个字符串
问题来了,在跨函数的指针中,它应当怎么办呢?
这里得提sjtpf的另一个特性,你只需要这么写:
main::someVar就可以在任何地方访问main里面的someVar
当然你在mian里面这么写也不是不行,你甚至可以写this::someVar 但是没必要
然后对于每一个对象它会有一个map 记录内部的对象的地址
这是可以嵌套的 比如main里面有个dog,那么在第一层map里面main指向的地址是一个map 这个map里面dog指向的是第三个map
等等
反正sjtpf会处理好这些的
还得提一嘴类 类其实是个特殊的对象 每当实例化一个类时 其实就是对那个类的拷贝
好了 说的太远了 现在是指针的第二个问题
指针其实可以指向有参数的函数 也可以只指向函数
也就是说 a (“a”,print)-^;和a2 print-^;其实都合法
调用a会直接输出“a”,但是a2必须这么写(“a”,a2);才行
反正指针其实就是把指向的东西不管三七二十一全部扔到调用它的地方
太神奇了