刚开始用用STL vector,村了一组组的数据在vector<DWORD>  vec里,想进一步处理,请问可以把它用作形参吗?  怎么用?给个代码或是提示... 

解决方案 »

  1.   

    一般这样用
    void fun(vector<DWORD>  &vec)
    {
    }
    也可以用,这样是传副本过去,如果数组比较大,效率比较低。
    void fun(vector<DWORD>  vec)
    {
    }
      

  2.   

    可以啊:DWORD min(vector<DWORD> nums)
    {
       if( nums.empty() ) return -1;    sort(nums.begin(), nums.end());    return nums[0];
    }
      

  3.   

    当然可以啊
    例如:搜索vec中等于value的元素,返回索引,没有则返回-1
    int GetPos(DWORD value, vector<DWORD> vec)
    {
       for(int i = 0; i < vec.size(); i++ )
       {
          if( vec[i] == value )
          {
             return i;
          }
       }
       return -1;
    }
      

  4.   

    stl 容器是值拷贝语义 。指针可以拷贝,而引用不可以。
      

  5.   

    比如你有个函数要进一步处理vec, returntype fineprocessing(vector<DWORD>& vec){    //处理之.....
    }或者returntype fineprocessing(vector<DWORD> vec){    //处理之.....
    }后者是传值, 需要拷贝vec每个元素, 而前者是传引用, 效率高一些.
      

  6.   

    你试过没有,怎么不好使了?void fun(vector <DWORD>  &vec)
    {
      DWORD d = vec[0];
      //...
      

  7.   

    你弄明白c++中函数是如何传递参数,这个就不是问题了。
    对象传参需要对象有public的复制构造函数(默认的也行),如果不符合这个条件,一般要通过引用或者指针传参了
      

  8.   

    《C++ primer》里第13章-复制控制讲的很清
      

  9.   

    好吧,我要结贴了,最后,我觉得这个方法比较好,给大家看看,呵呵  仍然欢迎大家的意见哦...
    通常,函数不应该有vector或其他容器类的形参。调用vector形参的函数将会复制vector的每一个元素。为避免复制,应将其声明为引用类型。然而,C++程序员更倾向于使用传递迭代器,如下:#include "Head.h"void print(vector<int>::const_iterator beg,
         vector<int>::const_iterator end)
    {
     while (beg != end)
     {
      cout<<*beg++;
      if (beg != end)
       cout<<" ";
      else
       cout<<endl;
     }
    }int main()
    {
     vector<int> ivec;
     for (int i=0; i!=10; ++i)
      ivec.push_back(i);
     vector<int>::iterator begin = ivec.begin();
     vector<int>::iterator end = ivec.end();
     print(begin, end); system("pause");
     return 0;
    }本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hangyu628/archive/2009/05/20/4202182.aspx