【发布时间】:2017-06-17 04:53:33
【问题描述】:
我想将迭代器与 C++ 数组一起使用,但也与原始指针一起使用。 我可以使用静态向量:
#define SIZE 10
int vect[SIZE] = {0};
vect[3] = 5;
int* p = std::find(std::begin(vect), std::end(vect), 5);
bool success = p != std::end(vect);
如何使用原始指针(可能是堆分配的向量)来做到这一点? 当然编译器不知道数据的大小,所以这段代码
int* pStart = vect;
std::find(std::begin(pStart), std::end(pStart), 5);
给予
error C2784: '_Ty *std::begin(_Ty (&)[_Size])' :
could not deduce template argument for '_Ty (&)[_Size]' from 'int *'
是否可以让begin() 和end() 意识到这一点?
【问题讨论】:
-
怎么可能做what?你想达到什么目的?你的目标是什么?
-
使用
std::array代替,它具有C 数组的所有功能,但实际上具有STL 接口。它的迭代器被实现为指针。 -
@rlbond 除了在这种情况下,普通数组完全可以。