微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

back_inserter 如何确定容器的类型

如何解决back_inserter 如何确定容器的类型

我无法理解 back_inserter 如何知道要返回的容器的类型。

我的“调查”从 this page 开始。在那里你会看到 std::back_inserter 定义为

template <class Container>
  back_insert_iterator<Container> back_inserter (Container& x);

还有一个示例代码

// back_inserter example
#include <iostream>     // std::cout
#include <iterator>     // std::back_inserter
#include <vector>       // std::vector
#include <algorithm>    // std::copy

int main () {
  std::vector<int> foo,bar;
  for (int i=1; i<=5; i++)
  { foo.push_back(i); bar.push_back(i*10); }

  std::copy (bar.begin(),bar.end(),back_inserter(foo));

  std::cout << "foo contains:";
  for ( std::vector<int>::iterator it = foo.begin(); it!= foo.end(); ++it )
      std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

我看不懂的那一行是

std::copy (bar.begin(),back_inserter(foo));

不应该是线

std::copy (bar.begin(),back_inserter<std::vector<int>>(foo));

显然它不应该因为代码运行。那么 back_inserter 如何知道用于“反向插入”的容器类型。我错过了什么?

解决方法

此功能称为类型推导,根据本书,它是现代 C++ 的基础:https://www.php.net/manual/en/functions.anonymous.php

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。