不使用范围for循环、std::optional和std::vector<_Ty>。
时间: 2024-12-21 22:26:33 浏览: 6
如果你想要遍历数组或其他容器,而不使用C++11引入的`range-based for loop`(范围for循环)、`std::optional`(可选值)以及`std::vector`(动态数组),你可以使用传统的指针迭代或迭代器。例如,对于一个整型数组,可以这样做:
1. **指针迭代**:
```cpp
int arr[5] = {1, 2, 3, 4, 5};
for (int* ptr = arr; ptr != arr + 5; ++ptr) {
cout << *ptr << " ";
}
```
2. **迭代器**(适用于所有支持迭代器的容器,不仅仅是数组):
```cpp
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; ++i) {
cout << arr[i] << " ";
}
```
对于`std::optional`,如果想避免它,你可以选择直接检查是否有值,或者使用`std::maybe`(不是标准库的一部分,但类似的概念):
```cpp
if (std::optional<int> optValue = someFunctionThatReturnsOptional()) {
if (optValue) {
// 使用optValue
} else {
// 没有值
}
} else {
// 错误或空值
}
```
而如果你想不使用`std::vector`,可以使用`C-style array`或`struct数组`替换,或者手动管理大小和内存。
请注意,上述的某些技术已经过时或不再推荐使用,现代C++倾向于使用更强大、更安全的工具,比如`std::vector`和现代的迭代器技术。但是,在特定的古老代码库或教学场景下,可能会遇到这样的需求。
阅读全文