Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何知道元素是否是使用for(inti:myVector)代码样式的向量中的最后一个元素?_C++ - Fatal编程技术网

C++ 如何知道元素是否是使用for(inti:myVector)代码样式的向量中的最后一个元素?

C++ 如何知道元素是否是使用for(inti:myVector)代码样式的向量中的最后一个元素?,c++,C++,是否有任何方法可以知道我是否是使用此代码样式的最后一个元素,而不使用额外的变量或方法(例如:count、myVector.size()) 像 for(vector::iterator it=myVector.begin();it!=myVector.end();+it){ 如果(it!=end()-1){ ... } } 答案是否定的,如果不使用辅助计数,就无法找到索引。基于范围的表示法对您隐藏索引,并提供解引用迭代器。的基于范围的相当于(): 如果您需要基于索引的访问,那么请使用普通的旧迭代器

是否有任何方法可以知道我是否是使用此代码样式的最后一个元素,而不使用额外的变量或方法(例如:count、myVector.size())

for(vector::iterator it=myVector.begin();it!=myVector.end();+it){
如果(it!=end()-1){
...
}
}

答案是否定的,如果不使用辅助计数,就无法找到索引。基于范围的表示法对您隐藏索引,并提供解引用迭代器。的基于范围的
相当于():


如果您需要基于索引的访问,那么请使用普通的旧迭代器。

对我来说听起来像个XY问题。你为什么关心最后一个要素?你打算用它做什么不同的事情?你是改变向量的每个元素还是只读取它?我不知道您使用的是什么逻辑,但创建一个新的向量可能有意义,它包含除第一个元素的最后一个元素以外的所有元素。或者,让您的循环在最后一个元素上运行,然后在之后进行修复是有意义的
for(int& i:myVector){
   ...
}
for(vector<int>::iterator it=myVector.begin();it!=myVector.end();++it){
    if(it!=end()-1){
        ...
    }
}
{
    auto && __range = range_expression ; 
    for (auto __begin = begin_expr,
    __end = end_expr; 
    __begin != __end; ++__begin) { 
        range_declaration = *__begin; 
        loop_statement 
    } 
}