vector或其他标准库容器类型形参

10 篇文章 0 订阅
6 篇文章 0 订阅
函数不应该有包括像vector或者其他标准库类型的形参,调用含有非引用类型的vector形参的函数将会复制vector中的每一个元素,将会导致内存资源浪费。应该考虑使用引用的形参类型,而引用形参在使用时可能会有意无意更改原来vector中的元素值,这就会导致原有数据的丢失。
    数组有两个特征:一是数组不能复制,要想得到数组中的元素,必须将数组中的元素一一复制,二是使用数组名时,数组名会自动转化为之相期第一个元素的指针。由于数组不能复制,因此无法利用数组的类型的形参。
    一般来说,应该通过传递指向容器中需要处理的元素的迭代器来间接地传递容器。形参中传递迭代器或者数组的指针,在使用时通过解引用可以间接访问容器或者数组中的内容。
    
void main()
{
    vector<string>vStr(10,"hello!");
    char ch[10]={'0','1','2','3','4','5','6','7','8','9'};
    vector<string>::iterator iter1=vStr1.begin();
    vector<string>::iterator iter2=vStr1.end();
    isize_t sz=sizeof(ch)/sizefo(ch[0]);

    printvector(iter1,iter2 );
    printchar(ch,sz );  
    int ia[]={0,1,2,3,4,5,6,7,8,9}
    print(ia,sz);   
}

void printvector(vector<string>::iterator pBegin, vector<string >::iterator pEnd )
{
    while(pBegin!=pEnd)
            {
                  cout<<*pBegin;
                  if(pBegin!=pEnd) 
                      cout<<"  ";
                  pBegin++;
            }
            cout<<endl;
 

void printchar(char *pChar,size_t size)
{
    size_t sz=0;
    while(sz!=size)
            {
                  cout<<*(pChar+sz);
                  if(sz!=size) 
                      cout<<"  ";
                  sz++;
            }
            cout<<endl;
}  
程序将依次输出vStr1和ch中的所有元素。 

void printvalues(int ia[],size_t size)
{
    for(size_t sz=0;sz<size;sz++)
        {
            cout<<ia[sz]<<endl;
         }

输出数组中的所有元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值