Luc*_*uca 4 c++ arrays pointers
我正在尝试为一个C风格的字符串数组(一个指向char的指针数组)获取一个开头和一个结束指针.为什么我不能调用开始和结束函数来获取它们?
#include <iostream>
#include <iterator>
int main(int argc,char *argv[])
{
char **first=std::begin(argv),**last=std::end(argv);
}
Run Code Online (Sandbox Code Playgroud)
编译器说我的调用没有匹配功能 begin(char**&)
这些函数应用于数组.至于参数,argv它实际上有类型,char **因为按值传递的数组转换为指向其第一个元素的指针,参数也调整为指针.
你可以写简单
#include <iostream>
#include <iterator>
int main(int argc,char *argv[])
{
auto first = arg, last = argv + argc;
}
Run Code Online (Sandbox Code Playgroud)
如果函数将相应的参数声明为对数组的引用,则可以使用函数std :: begin和std :: end.例如
int MyMain( char * ( &argv )[10] )
{
auto first = std::begin( argv ), last = std::end( argv );
}
Run Code Online (Sandbox Code Playgroud)
不过如果写的话也是一样的
auto first = argv, last = argv + 10;
Run Code Online (Sandbox Code Playgroud)
以下是如何在C++标准中定义函数
template <class T, size_t N> T* begin(T (&array)[N]);
4 Returns: array.
template <class T, size_t N> T* end(T (&array)[N]);
5 Returns: array + N.
Run Code Online (Sandbox Code Playgroud)