vcector, struct

來源:互聯網
上載者:User
http://stl.winterxy.com/html/000078.html

先看個簡單的例子:

struct D {
  D(int i=0){num=i;}
  int num;
};
struct print_D{
  void operator()(const D* d)const{
      cout<<"I am D. my num="<<d->num<<endl;
    }
};

int main()
{
  vector<D*> V;

  V.push_back(new D(1));
  V.push_back(new D(2));
  V.push_back(new D);
  V.push_back(new D(3));

  for_each(V.begin(), V.end(), print_D());
}
編譯輸出:

I am D. my num=1
I am D. my num=2
I am D. my num=0
I am D. my num=3

這裡使用的是vector<D*> V; 在mem_fun_t建構函式中,剛好需要指標,如果不是D*, 而是使用vector<D> V; 還能用嗎?

struct D {
  D(int i=0){num=i;}
  void print() { cout << "I'm a D. my num=" << num<< endl; }
  int num;
};

int main()
{
  vector<D> V;

  V.push_back(D(1));
  V.push_back( D(2));
  V.push_back( D());
  V.push_back( D(3));

  for_each(V.begin(), V.end(), mem_fun_ref(&D::print));
}

一切都OK了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.