C++ 一个代码中循环的不同迭代器
我正在创建一个函数,它接受一个操作符向量(不同的矩阵)。操作员可以按不同顺序提供(从最小到最大或其他方式) 我需要根据顺序创建for循环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(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