首先说明一下,C++primer第五版练习6.27中要求的是用initializer_list<int>类型的对象作为参数,但因为initializer_list是C++11的标准,而我用的VC6.0不支持,因此在这里我将initializer_list换成了vector。
之前写函数的时候,遇到的很多情况都是函数参数个数已知,但是如果我们无法提前预知向函数传递的参数个数呢?这里,我们可以用vector<T>和initializer<T>类型的对象作为函数的参数。用法如以下代码:
// primer_6_2_6.cpp : Defines the entry point for the application.
// 编写一个函数,它的参数是vector<int>类型的对象,函数的功能是计算列表中所有元素的和
// c++primer第五版练习6.27中要求的是用initializer_list<int>类型的对象作为参数,
// 但因为initializer_list是C++11的标准,VC6.0不支持,因此在这里我将initializer_list换成了vector。
#include "stdafx.h"
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int fun_sum(vector<int>); //函数声明,参数为vector<int>类型的对象
vector<int> ls; //定义一个容器
cout << "input the numbers: ('q' to over)" << endl; //提示输入数据,以'q'作为结束符
int a; //定义一个变量用于接收用户输入
while(cin >> a) //如果用户输入int类型数据
{
ls.push_back(a); //添加到容器
}
int sum=0; //定义一个变量用来存放和
sum=fun_sum(ls); //调用函数进行求和
cout << "the sum is: " << sum << endl; //输出求和结果
system("pause");
return 0;
}
int fun_sum(vector<int> li) //求和函数
{
int result=0;
for(int i=0;i<li.size();i++)
result=result+li[i];
return result;
}
效果如下:
如果用的编译器支持initializer_list,可以试试将vector换成initializer_list,要注意的是,还要把头文件#include<vector> 换成#include<initializer_list>。