std vector 构造接受单个参数的构造函数为什么是显示的

C++ 如何将容器(vector)作为参数传给一个函数?
我的图书馆
C++ 如何将容器(vector)作为参数传给一个函数?
问题: 生成一个vector &string& Vec 对象,我该如何将该对象传给一个函数(值传递),请问我该怎么定义形参? 回答: 以 vector&int& 为例说明。有多种函数声明方式: 1. void deal( vector&int& vec ); 2. void deal( vector&int&* pvec ); 3. void deal( const vector&int&* pvec ); // 在函数内不能改变 pvec 指向的对象 4. void deal( vector&int&& vec ); 5. void deal( const vector&int&& vec ); // 在函数内不能改变 vec 对象 其对应的调用分别是: 1. deal( vec ); 2. deal( &vec ); 3. deal( &vec ); 4. deal( vec ); 5. deal( vec ); 补充: 3. void deal( const vector&int&* pvec ); //调用时不会调用拷贝构造函数5. void deal( const vector&int&& vec ); // 在函数调用时调用了vector的拷贝构造函数
TA的最新馆藏2012年5月 专题开发/技术/项目大版内专家分月排行榜第二2010年3月 C/C++大版内专家分月排行榜第二
2012年4月 Linux/Unix社区大版内专家分月排行榜第三2011年7月 Linux/Unix社区大版内专家分月排行榜第三2010年2月 C/C++大版内专家分月排行榜第三
2009年4月 总版技术专家分月排行榜第一
2009年11月 Linux/Unix社区大版内专家分月排行榜第一2009年6月 Linux/Unix社区大版内专家分月排行榜第一2009年4月 C/C++大版内专家分月排行榜第一2009年3月 C/C++大版内专家分月排行榜第一2009年3月 Linux/Unix社区大版内专家分月排行榜第一2009年2月 Linux/Unix社区大版内专家分月排行榜第一
2012年5月 专题开发/技术/项目大版内专家分月排行榜第二2010年3月 C/C++大版内专家分月排行榜第二
2012年4月 Linux/Unix社区大版内专家分月排行榜第三2011年7月 Linux/Unix社区大版内专家分月排行榜第三2010年2月 C/C++大版内专家分月排行榜第三
2003年9月 C/C++大版内专家分月排行榜第二2002年6月 C/C++大版内专家分月排行榜第二2002年4月 C/C++大版内专家分月排行榜第二
2007年3月 C/C++大版内专家分月排行榜第三2007年2月 C/C++大版内专家分月排行榜第三2007年1月 C/C++大版内专家分月排行榜第三2003年7月 C/C++大版内专家分月排行榜第三
2003年9月 C/C++大版内专家分月排行榜第二2002年6月 C/C++大版内专家分月排行榜第二2002年4月 C/C++大版内专家分月排行榜第二
2007年3月 C/C++大版内专家分月排行榜第三2007年2月 C/C++大版内专家分月排行榜第三2007年1月 C/C++大版内专家分月排行榜第三2003年7月 C/C++大版内专家分月排行榜第三
2015年1月 C/C++大版内专家分月排行榜第二2012年3月 C/C++大版内专家分月排行榜第二2011年11月 C/C++大版内专家分月排行榜第二2010年6月 C/C++大版内专家分月排行榜第二2010年5月 C/C++大版内专家分月排行榜第二
2011年4月 C/C++大版内专家分月排行榜第三2011年2月 C/C++大版内专家分月排行榜第三2010年8月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。stl库之vector
stl库之vector
发布时间: 12:13:16
编辑:www.fx114.net
本篇文章主要介绍了"stl库之vector",主要涉及到stl库之vector方面的内容,对于stl库之vector感兴趣的同学可以参考一下。
vector构造函数
向量(vector容器类)vector是一种动态数组,是基本数组的类模板。vector 类中定义了4中种构造函数:
&1、默认构造函数,构造一个初始长度为0的空向量,如:vector&int& v1;&
&2、带有单个整形参数的构造函数,此参数描述了向量的初始大小。这个构造函数还有一个可选的参数,这是一个类型为T的实例,描述了各个向量种各成员的初始值;如:vector&int& v2(n,0);定义长为n的vector,每个vector的元素值是0。
&3、复制构造函数,构造一个新的向量,作为已存在的向量的完全复制,如:vector&int& v3(v2);
&4、带两个常量参数的构造函数,产生初始值为一个区间的向量。区间由一个半开区间[first,last) 来指定。如:vector&int& v4(first,last)
#include &stdafx.h&
#include &vector&
#include &iostream&
int ar[10] = {
12, 45, 100, 23, 22, 35, 63, 11, 2, 55
char* str = &Hello World&;
int _tmain(int argc, _TCHAR* argv[])
vector &int& vec0;
vector &int& vec1(ar, ar+10);
//first=ar,last=ar+10,不包括ar+10
vector &char& vec2(str,str+strlen(str)); //first=str,last= str+strlen(str),
vector &int& vec3(10, 0);
vector &char& vec4(vec2);
cout&&&vec0:&&&
for(vector&int&::const_iterator p=vec0.begin();p!=vec0.end(); ++p)
cout&&*p&&& &;
cout&&endl&&&vec1:&&&
for(vector&int&::const_iterator p=vec1.begin();p!=vec1.end(); ++p)
cout&&*p&&& &;
cout&&endl&&&vec2:&&&
for(vector& char &::const_iterator p=vec2.begin();p!=vec2.end(); ++p)
cout&&endl&&&vec3:&&&
for(vector&int&::const_iterator p=vec3.begin();p!=vec3.end(); ++p)
cout&&*p&&& &;
cout&&endl&&&vec4:&&&
for(vector& char &::const_iterator p=vec4.begin();p!=vec4.end(); ++p)
getchar();
运行结果:
&vector成员函数
为了帮助理解向量的概念,这里写了一个小例子,其中用到了vector的成员函数:begin(),end(),push_back(),assign(),front(),back(),erase(),empty(),at(),size()。
#include &stdafx.h&
#include &vector&
#include &string&
#include &iostream&
int ar[20] = {
12, 45, 100, 23, 22,
35, 63, 11,
12, 66, 88,
33, 33, 24, 75,
void showVector(string infos,vector &int& vec1);
void showVector(string infos,vector &int& vec1){
infos=infos+&vec1:&;
cout&&endl&&infos&&
for(vector&int&::const_iterator p=vec1.begin();p!=vec1.end(); ++p)
cout&&*p&&& &;
int _tmain(int argc, _TCHAR* argv[])
vector &int& vec1(ar, ar+20);
showVector(&原vector
//测试添加和插入成员函数,vector不支持从前插入
vec1.push_back(2);//从后面添加一个成员
showVector(&push_back(2)
//测试移出和删除
vec1.pop_back();//将最后一个成员移出vec1
showVector(&pop_back()
vec1.insert(vec1.begin()+1,5);//在vec1第一个的位置上插入成员5
showVector(&insert(vec1.begin()+1,5)
//测试引用类函数
cout&&endl&&&vec1.front()=&&&vec1.front()&&//vec1第零个成员
cout&&&vec1.back()=&&&vec1.back()&&//vec1的最后一个成员
cout&&&vec1.at(4)=&&&vec1.at(4)&&//vec1的第五个成员
cout&&&vec1[4]=&&&vec1[4];
vec1.erase(vec1.begin()+1,vec1.end()-2);//删除成员
showVector(&erase(vec1.begin()+1,vec1.end()-2);
cout&&endl&&&vec1.size(): &&&vec1.size();//打印成员个数
//从vec1第一的位置开始插入vec3的所有成员
//vec1.insert(vec1.begin()+1,vec3.begin(),vec3.end());
//测试赋值成员函数
vec1.assign(8,1);
// 重新给vec2赋值,8个成员的初始值都为1
showVector(&assign(8,1)
//显示序列的状态信息
cout&&endl&&&vec1.size(): &&&vec1.size()&&//打印成员个数
cout&&&vec1.empty(): &&&vec1.empty();//是否为空
vec1.erase(vec1.begin(),vec1.end());
showVector(&erase(vec1.begin(),vec1.end())
cout&&endl&&&vec1.size(): &&&vec1.size()&&//打印成员个数
cout&&&vec1.empty(): &&&vec1.empty();//是否为空
getchar();
运行结果:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:查看: 8042|回复: 6|关注: 0
如何编写一个matlab函数能接受任意多个参数
<h1 style="color:# 麦片财富积分
新手, 积分 10, 距离下一级还需 40 积分
调用函数的形式应该是 addm(a1,a2,a3,...)然后得到和,a1,a2都是矩阵,注意不能输入矩阵数量。
这个到底怎么做?求指点。关键在“任意多个”
Simulink 基础讨论版块优秀回答者
关注者: 156
functionName(varargin)
用varargin这个内置变量作为参数
然后varargin{1},varargin{2}这样来引用第n个输入参数
论坛优秀回答者
帖子最佳答案
关注者: 2902
用varargin参数即可
function mysum=addm(varargin)
& &mysum=sum(varargin(:));
math (博士、教授)Email: & &&&QQ:
我在网络上的言论、见解等只代表我个人的观念,与任何研究机构、商业公司等无关。欢迎你通过任何方式与我探讨学术和技术上的问题(学生提问的话,请在论坛上发帖提问)。最新日志:
<h1 style="color:# 麦片财富积分
本帖最后由 朱晓珠 于
00:50 编辑
math 发表于
用varargin参数即可
function mysum=addm(varargin)
但是要求这几个矩阵之和,刚才那个怎么求不出?谢谢
论坛优秀回答者
帖子最佳答案
关注者: 2902
朱晓珠 发表于
但是要求这几个矩阵之和,刚才那个怎么求不出?谢谢
自己多动手调试:function mytest
A=[1 2 3];
B=[4 5 6];
C=addm(A,B)
function mysum=addm(varargin)
mysum = 0;
try
& & for i=1:nargin
& && &&&mysum=mysum+varargin{i};
& & end
catch
& & disp('Incorrect forma');
end
math (博士、教授)Email: & &&&QQ:
我在网络上的言论、见解等只代表我个人的观念,与任何研究机构、商业公司等无关。欢迎你通过任何方式与我探讨学术和技术上的问题(学生提问的话,请在论坛上发帖提问)。最新日志:
<h1 style="color:# 麦片财富积分
math 发表于
自己多动手调试:
太感谢了,运行良好。终于能继续推进论文了,虽然这个函数还不很熟,但我回头一定要完全掌握了。
再次衷心感谢管理员熬夜帮我解答问题,早点睡吧 :)
<h1 style="color:# 麦片财富积分
柚籽 发表于
functionName(varargin)
用varargin这个内置变量作为参数
然后varargin{1},varargin{2}这样来引用第n个输 ...
谢谢,又长见识了 :)
站长推荐 /3
使用MATLAB和Simulink进行软件无线电设计
Powered by}

我要回帖

更多关于 std vector 构造 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信