美文网首页
C++中的vector模板类作形参的小问题

C++中的vector模板类作形参的小问题

作者: Nise9s | 来源:发表于2018-10-08 19:54 被阅读0次

学习vector模板类时发现其作为形参有多种不同的形式,比如如下两种形式:

void function(vector<dtype> &vec);
void function(vector<dtype> vec);

两种形式的区别用两个例子给出,main函数部分如下:

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <vector>
#include <ctime>
using namespace std;
int main()
{
    vector<int> p;
    int a;
    a=0;
    for(int i=0;i < 10;i++)
        p.push_back(a);
    prtvector(p, 10);
    for(int i=0; i<30 ;i++)
        cout<< p[i] <<endl;
    return 0;
}

考察void function(vector<dtype> &vec)的形式,即使用引用传递。定义一个函数如下:

void prtvector(vector<int> &p, int N)
{
    for(int i=0;i < 20;i++)
        p.push_back(i);
}

输出结果为

0
0
0
0
0
0
0
0
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

这种情况下,随着函数内形参的变化,实参会随着改变。使用指针传递也会有同样的效果,总之,实参会随着形参变化而变化。
考察void function(vector<dtype> vec),直接进行值传递,函数变为

void prtvector(vector<int> p, int N)
{
    for(int i=0;i < 20;i++)
        p.push_back(i);
}

输出结果为

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
134977
0
0
0
0
0
0
0
0
0
0

输出了一堆不值知道的未知值,这说明直接采用值传递的方式,不能带给实参值任何变化。

相关文章

  • C++中的vector模板类作形参的小问题

    学习vector模板类时发现其作为形参有多种不同的形式,比如如下两种形式: 两种形式的区别用两个例子给出,main...

  • 模板与泛型 —— 可变参模板

    一、可变参函数模板 二、可变参类模板 C++ 11 中引入了 可变参模板 (Variadic Template):...

  • 第三章 摘录

    3.3 标准库类型vector c++既有类模板,也有函数模板,其中vector是一个类模板。表示对象的集合,其中...

  • template 模板

    两种通式:函数模板通式,类模板通式 一、函数模板通式 二、类模板通式 三种类型的模板形参:类型形参,非类型形参和模...

  • 2018-01-12

    #漫漫长路C++(一):C++中的vector容器 包含头文件 vector是一个类模板,不是类或者函数。 定义与...

  • 标准模板库-vector

    标准模板库-vector 1. vector简介 vector为C++的STL中的模板数组容器。在使用时需要包含#...

  • 力卉编程 | C语言 | 模板类定义

    C++ 中类模板的写法如下: template <类型参数表>class 类模板名{成员函数和成员变量}; 类型参...

  • C++ Vector 用法剖析

    vector介绍 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类...

  • ★07.关于类模板

    简述 类模板:是类类型的模板,如:vector。 模板类:类模板的实例化,如:vector 。 类模板的模板参数无...

  • 模板与泛型 —— 模板模板参数

    一、模板模板参数 一、模板模板参数 考虑在类模板中,有成员变量 : vector myt; vector 实...

网友评论

      本文标题:C++中的vector模板类作形参的小问题

      本文链接:https://www.haomeiwen.com/subject/bmojaftx.html