
1.vector课后习题1基于排列构建数组题目描述首先看函数构成函数返回值是一个vector的对象因此在函数内部要先实例化一个vector类的对象。题目要求是让ans[i] nums[nums[i]]但是对于vector对象它并不是数组这种数据结构因此不能仅仅通过赋值语句实现值的拷贝对于vector对象的创建自然而然的想到了插入语句因此使用push_back()函数将nums[nums[i]]作为函数参数遍历整个nums插入即可于是不难写出以下代码对于visual studio如何检验代码的正确性观察到原来的网站是要求将函数写在一个类中通过调用接口实现解决问题。同时为了便于检测用例我们也将输出vector容器内容的函数PrintArry写在Solution类中。对于类我们回顾之前在面向对象篇学习的内容于是知道要想要在main函数中调用Solution的成员函数要首先实例化一个Solution类S1并把用例的两个数组vector是实例化。接着再分别实例化两个用于接受检测结果的vector类v1和test使用S1的成员函数buildArry将用例的对象v和test1作为参数传入同时使用赋值语句赋值给接收数组v1和test最后调用S1的输出函数PrintArry并把接收数组作为参数传入以输出结果。2.数组串联题目描述首先观察已给出代码部分发现该题和上题一样都需要自行实例化一个vector对象ans来作为返回值。题目希望我们将原有数组nums的二倍赋值给ans并返回ans这里不难会想到上面题目的思维并沿用但是重复使用for循环的方式看起来有些“笨笨的”对于此处我们要想是否存在优化方式首先对于ans数组的前半部分这里明显就是和原来的数组一样的内容而这里恰巧是使用vector容器来实现的因此除了for循环插入以外还可以调用C类的特性——拷贝构造函数