Range-based for loops
Use case
Iterate over binary sections without manual indexing.
Explanation
for (auto& x : container) iterates over all elements. Use const auto& for read-only access and auto& to modify elements. Works with any container that has begin()/end().
Code
#include <cstdint>
#include <iostream>
#include <vector>
int main() {
std::vector<uint64_t> addresses = {0x1000, 0x1100, 0x1200};
std::cout << "Addresses:\n";
for (const auto &addr : addresses) {
std::cout << "0x" << std::hex << addr << "\n";
}
for (auto &addr : addresses) {
// Apply ASLR slide/offset.
addr += 0x10000000;
}
std::cout << "After slide/offset:\n";
for (const auto &addr : addresses) {
std::cout << "0x" << std::hex << addr << "\n";
}
return 0;
}
Output
$ ./src/c++11/build/range-based-for-loops
Addresses:
0x1000
0x1100
0x1200
After slide/offset:
0x10001000
0x10001100
0x10001200