C++ 一个代码中循环的不同迭代器

C++ 一个代码中循环的不同迭代器,c++,for-loop,indexing,iterator,C++,For Loop,Indexing,Iterator,我正在创建一个函数,它接受一个操作符向量(不同的矩阵)。操作员可以按不同顺序提供(从最小到最大或其他方式) 我需要根据顺序创建for循环 for(auto tr = operators.begin(); tr != operators.end() ; ++tr ) 或 循环内的内容保持不变 有没有办法自动做到这一点?可能基于一些帮助输入参数 您可以通过让函数使用一对迭代器(一个“范围”)而不是一个完整的矩阵或向量来支持这一点。例如: template <typename Iterato

我正在创建一个函数,它接受一个操作符向量(不同的矩阵)。操作员可以按不同顺序提供(从最小到最大或其他方式)

我需要根据顺序创建for循环

for(auto tr = operators.begin(); tr != operators.end() ; ++tr )

  • 循环内的内容保持不变

  • 有没有办法自动做到这一点?可能基于一些帮助输入参数


您可以通过让函数使用一对迭代器(一个“范围”)而不是一个完整的矩阵或向量来支持这一点。例如:

template <typename Iterator>
void print(Iterator begin, Iterator end) {
    for(auto tr = begin; tr != end; ++tr)
        ; // ...
}

您可以通过让函数使用一对迭代器(一个“范围”)而不是完整的矩阵或向量来支持这一点。例如:

template <typename Iterator>
void print(Iterator begin, Iterator end) {
    for(auto tr = begin; tr != end; ++tr)
        ; // ...
}

尽管从技术上讲,
end()
迭代器通常可以安全地递减和取消引用,但您依赖的是并非所有迭代器都保证具有的特定属性


许多标准容器(有些在C++11中引入)既有正向迭代器(按顺序遍历元素)也有反向迭代器(按相反顺序遍历元素)。
begin()
end()
的对应项分别是
rbegin()
rend()

虽然从技术上讲,
end()
迭代器通常可以安全地递减和取消引用,但您依赖的是并非所有迭代器都保证具有的特定属性


许多标准容器(有些在C++11中引入)既有正向迭代器(按顺序遍历元素)也有反向迭代器(按相反顺序遍历元素)。
begin()
end()
的对应项分别是
rbegin()
rend()

在第二个例子中,你不是指
rbegin()
rend()
而不是
end()
begin()
?在第二个例子中,你不是指
rbegin()
rend()
而不是
end()
begin()
std::vector<int> vec;
print(vec.begin(), vec.end()); // forward
print(vec.rbegin(), vec.rend()); // reverse