地图索引上的算术运算,cpp
Arithmetic operations on map index, cpp
-
我编写了一个函数,该函数扫描目录并将它们存储在表单映射中
map<int, string>mymap
-
目录中的所有文件名都是正整数,因此map的键是
int
中的文件名,值是实际文件名,这是一个string
-
我正在尝试执行以下操作(打印地图末尾存在的值之间的连续差异)
map<int, string>::reverse_iterator rit = file_map.rbegin(); int size = file_map.size(); // trying to find the consecutive difference between indices for ( int i = size; i>1 ; i--) { cout << " diff is " <<(int) (rit->first) - (int)((++rit)->first) << endl; }
有了这个,我无法打印差异,或者如果我做rit++
而不是++rit
,排序就会错误。
有没有正确的方法?
我假设您没有使用 C++11,所以让我们添加我们自己的std::next
版本:
template<class ForwardIt>
ForwardIt next(ForwardIt it,
typename std::iterator_traits<ForwardIt>::difference_type n = 1)
{
std::advance(it, n);
return it;
}
有了这个,我们可以向前迭代:
if (file_map.size() >= 2) {
map<int, string>::iterator it = file_map.begin();
map<int, string>::iterator end = next(file_map.end(), -1);
for (; it != end; ++it) {
cout << " diff is " << next(it)->first - it->first << endl;
}
}
你不需要把first
投到一个int
,它已经是一个了。
相关文章:
- 算术运算的结果类似于:C浮点变量中的1/3
- 更快的C++算术运算
- 为什么循环体中的一个基本算术运算执行得比两个算术运算慢
- 为什么对无符号字符进行算术运算会将它们提升为有符号整数
- 如何在 C++ 中计算字符串的算术运算
- 复数的算术运算
- 具有非常非常大数字的算术运算
- 如何使用C++中的处理器指令来实现快速算术运算
- boost::spirit::x3 phrase_parse 在进入 Vector 之前进行算术运算
- C++中混合数据类型的算术运算
- C++:编译器是否优化整数 + 浮点算术运算?
- 如何在特征中对二维数组的列执行简单的算术运算
- 使用数字列表和算术运算获取目标数字
- C++:“enable_if”用于限制支持特定算术运算的类型
- 如何正确避免 SIGFPE 和算术运算溢出
- 编译器用于编译 128 位整数的基本算术运算的技巧
- 将临时值存储为某种数据类型时,算术运算的标准规则是什么
- 相同的算术运算在 C++ 和 Python 中给出不同的结果
- 带有空的算术运算
- 地图索引上的算术运算,cpp