这里使用了std::prev函数,它返回给定迭代器的前一个迭代器,而不改变原始迭代器。这是C++11标准引入的方法,用于在不改变原始迭代器的情况下获取前一个迭代器。
在C++17中,条件初始化语句(”Conditionally-Scoped Init Statement”)是对if和switch语句的一种扩展,使它们可以在条件判断中包含初始化语句。这一特性增强了代码的可读性和简洁性,特别是在需要在条件判断中进行变量初始化的场景下。具体来说,这种语法允许你在if或switch语句中引入一个新的变量,该变量的作用域仅限于该语句块内。
#include <iostream>
int main() {
if (int x = 42; x > 0) {
std::cout << "x is positive and equals " << x << std::endl;
} else {
std::cout << "x is non-positive" << std::endl;
}
// x 的作用域在此结束
return 0;
}
#include <iostream>
int main() {
switch (int x = 42; x) {
case 0:
std::cout << "x is zero" << std::endl;
break;
case 42:
std::cout << "x is 42" << std::endl;
break;
default:
std::cout << "x is something else" << std::endl;
break;
}
// x 的作用域在此结束
return 0;
}