不能在阵列上使用.begin()或.END() [英] Cannot use .begin() or .end() on an array
本文介绍了不能在阵列上使用.begin()或.END()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
错误读取:
请求成员'开始'在'改编',这是无类类型为int [5],结束,
我们无法根据前pression错误推断。
块引用>我的code:
的#include<&iostream的GT;
使用命名空间std;诠释的main()
{
INT * mypointer; INT ARR [5] = {1,3,5,7,9}; mypointer = ARR; 为(自动它= arr.begin(!);它= arr.end(); ++吧){
COUT<< * mypointer<< ENDL; mypointer ++;
} 返回0;
}
解决方案数组没有成员函数,因为它们不是类类型。这是错误的说法。
您可以使用
的std ::开始(ARR)
和的std ::结束(ARR)
从<&迭代器GT;
头而不是。这也适用与类型做的有无.begin()
和.END()
成员,通过重载:的#include<阵列GT;
#包括LT&;矢量>#包括LT&;&迭代器GT;诠释的main()
{
INT c_array [5] = {};
的std ::阵列< INT,5个cpp_array = {};
的std ::矢量<&INT GT; cpp_dynarray(5); 汽车c_array_begin =的std ::开始(c_array); // = c_array + 0
汽车c_array_end =的std ::结束(c_array); // = c_array + 5 汽车cpp_array_begin =的std ::开始(cpp_array); // = cpp_array.begin()
汽车cpp_array_end =的std ::结束(cpp_array); // = cpp_array.end() 汽车cpp_dynarray_begin =的std ::开始(cpp_dynarray); // = cpp_dynarray.begin()
汽车cpp_dynarray_end =的std ::结束(cpp_dynarray); // = cpp_dynarray.end()
}The error reads:
request for member 'begin', 'end' in 'arr' which is non class type int[5], unable to deduce from expression error.
My code:
#include <iostream> using namespace std; int main() { int * mypointer; int arr[5] = {1,3,5,7,9}; mypointer = arr; for(auto it = arr.begin(); it != arr.end(); ++it) { cout<<*mypointer<<endl; mypointer++; } return 0; }
解决方案Arrays have no member functions as they aren't a class type. This is what the error is saying.
You can use
std::begin(arr)
andstd::end(arr)
from the<iterator>
header instead. This also works with types that do have.begin()
and.end()
members, via overloading:#include <array> #include <vector> #include <iterator> int main() { int c_array[5] = {}; std::array<int, 5> cpp_array = {}; std::vector<int> cpp_dynarray(5); auto c_array_begin = std::begin(c_array); // = c_array + 0 auto c_array_end = std::end(c_array); // = c_array + 5 auto cpp_array_begin = std::begin(cpp_array); // = cpp_array.begin() auto cpp_array_end = std::end(cpp_array); // = cpp_array.end() auto cpp_dynarray_begin = std::begin(cpp_dynarray); // = cpp_dynarray.begin() auto cpp_dynarray_end = std::end(cpp_dynarray); // = cpp_dynarray.end() }
这篇关于不能在阵列上使用.begin()或.END()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文