use*_*014 3 c++ arrays foreach std c++11
如果我有一个静态数组,我可以这样做:
int a[] = {1, 2, 3};
for (const auto x: a) {printf("%d\n", x);}
Run Code Online (Sandbox Code Playgroud)
当我有一个指针(int*b)和数组大小(N)时,我可以做类似的事情吗?
我宁愿避免定义自己的begin()和end()函数.
我也不想使用std :: for_each,但它是一个选项.
只需使用类似容器的包装器:
template <typename T>
struct Wrapper
{
T* ptr;
std::size_t length;
};
template <typename T>
Wrapper<T> make_wrapper(T* ptr, std::size_t len) {return {ptr, len};}
template <typename T>
T* begin(Wrapper<T> w) {return w.ptr;}
template <typename T>
T* end(Wrapper<T> w) {return begin(w) + w.length;}
Run Code Online (Sandbox Code Playgroud)
用法:
for (auto i : make_wrapper(a, sizeof a / sizeof *a))
std::cout << i << ", ";**
Run Code Online (Sandbox Code Playgroud)
演示.
使用C++ 1Z,我们希望能够使用std::array_view.
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |