zoukankan      html  css  js  c++  java
  • 函数(C++ Primer读书笔记)

    C++ Primer 第五版课后题

    练习6.32 :下面的函数合法吗?如果合法,说明其功能;如果不合法,修改其中的错误并解释原因。

    #include <iostream>
    
    using namespace std;
    
    int &get(int *arry, int index)
    {
    	return arry[index];
    }
    
    int main()
    {
        int ia[10];
        for (int i = 0; i != 10; ++i)
    		get(ia, i) = i;
        return 0;
    }
    

      

    合法。给ia数组中的每个元素赋值。返回的是引用类型,得到的是左值,所以可以被赋值。

    练习6.33 :编写一个递归函数,输出vector对象的内容。

    #include <iostream>
    #include <vector>
    using namespace std;
    
    typedef vector<int>::iterator vec_ip;
    
    void re_print_vector(vector<int> &vec, vec_ip id)
    {
    	if (id != vec.end()) {
    		cout << *id << endl;
    		re_print_vector(vec, ++id);
    	}
    }
    
    int main()
    {
    	vector<int> vec;
    	for (int i = 1; i <= 10; ++i)
    		vec.push_back(i);
    	re_print_vector(vec, vec.begin());
    	return 0;
    }
    

      

    //命名真是太困难了。

    开始我的re_print_vector声明的是(vector<int> vec, vec_ip id),并没有引用,于是死循环= =,后来发现传递的是形参,那么形参的存储位置和实参一定不相同啊= =,id用永远不可能等于形参vec.end()。

    我为什么想到的是用迭代器呢?直接用数字下标岂不是简单的多[汗]。

  • 相关阅读:
    网络知识学习系列(一)
    C# 开发系列(三)
    angularJS 系列(三)- 自定义 Service
    添加百度地图,显示定位
    angularJS 系列(二)——理解指令 understanding directives
    angularJS 系列(一)
    hbuilder 手机app开发系列(一)
    vue + 百度地图api
    百度地图api
    canvas的api
  • 原文地址:https://www.cnblogs.com/wenruo/p/4814169.html
Copyright © 2011-2022 走看看