Range-based for loop: copy vs reference

Question 12 / 17 Correct so far: 0 (0 answered)

Snippet A

Range For Copy

void processStrings(const std::vector<std::string>& strings) {
    for (auto item : strings) {
        benchmark::DoNotOptimize(item.size());
    }
}
Snippet B

Range For Ref

void processStrings(const std::vector<std::string>& strings) {
    for (const auto& item : strings) {
        benchmark::DoNotOptimize(item.size());
    }
}
Shared test data (shared-setup)
static std::vector<std::string> createStringVector() {
    std::vector<std::string> strings;
    for (int i = 0; i < 1000; ++i) {
        strings.push_back("string_" + std::to_string(i));
    }
    return strings;
}

Which snippet is faster?

Select the correct answer(s)