C++primer第五版 编写一个函数,它的参数是vector<int>类型的对象,函数的功能是计算列表中所有元素的和。

首先说明一下,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>。

猜你喜欢

转载自blog.csdn.net/elma_tww/article/details/82493874
今日推荐