jeudi 14 janvier 2021

Ranged loop doesn't iterate over all elements of a vector [closed]

tls_emit_data callback push strings to encodedMessages vector

std::vector<std::string> encodedMessages;

void tls_emit_data(const uint8_t data[], size_t size) override
{
    encodedMessages.push_back(std::string(data, data + size));
}

I access them like below,

int counter = 0;

// Prints 4
std::cout << encodedMessages.size() << "\n";

// The loop only go over two items on the vector
for(const auto &i : encodedMessages) {
    std::cout << "COUNT :" <<  counter << "\n";

    counter++;
}

The vector has 4 elements but the ranged loop only iterate over 2 elements. I find this to be strange. Does this counts as a compiler bug?

My compiler is clang and C++ version is 17

Aucun commentaire:

Enregistrer un commentaire