c++ - 为什么 c++ 顺序访问迭代器的函数签名不使用指针?
问题描述
例如在这个片段 beg & end 中,似乎被用作指针。然而在函数声明 In *beg 中,In *end 既不提供也不被 c++ 编译器接受。为什么我们像指针一样使用它而不像函数的指针参数一样声明它?
#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
using namespace std;
template<class In, class X> void myreplace (In beg, In end, const X& x, const X& y)
{
while (beg != end)
{
if (*beg == x) *beg = y;
beg++;
}
}
int main()
{
vector<int> veca = { 1, 3, 4, 4, 1, 4, 4 };
myreplace(veca.begin(), veca.end(), 4, 2);
copy(veca.begin(), veca.end(), ostream_iterator<int>(cout, ","));
}
解决方案
推荐阅读
- javascript - React Router V4 - 如何在不从前一个路由中取消渲染组件的情况下为模态或叠加层提供唯一路由?
- sql - 传递多个输入 sql 查询闪亮
- python - 从 tkvar.get() 截断字典
- javascript - 通过 JavaScript 函数调用时,Rails 部分未呈现
- python - 如何检测python-docx中的空段落
- r - 试图让脚本为每 24 行计算一个值(使用函数)
- javascript - Angular 6:日期未定义
- java - Jersey HK2 依赖注入在更新到 v2.27 后不起作用
- javascript - Redux 不重新渲染组件
- c - 如何在不复制代码的情况下创建不可转换的 C 类型?