In C++ I understand that in order to create a dynamic array you need to use vectors. However I have a problem when I need to find information I put in the vector.
For example:
Lets say I have a simple vector that stores the name of a person and a small message the wrote. In the vector how do I find where Bill is located.
I was also trying to understand how to do this in PHP when I posted this question.
Indeed you seam confused. Let me try to help you.
One thing that is maybe confusing you: std::vector is not a geometric vector. It’s only a sequence of data of the same type that is contiguous in memory. So it’s like an array.
std::vector is basically a automatically managed dynamic array.
It means that it IS an array inside, but it’s managed by code that will make sure that array grows (gets bigger) when you try to add more data than it current capacity can hold.
Actually, std::vector is a class template. It means that it’s not a real class, it’s code that the compiler will use to generate itself a real class. If I say
This vector can only hold ints. And then:
this one hold std::string objects.
As I was saying, inside, it’s only code to manage an array dynamically. You can think the previous examples as if it was like that:
This is an oversimplified view of how it is inside, so don’t assume it’s exactly like that, but it might be useful.
Now, when you add values, the value is copied in the memory of the array, in an element that is not used yet (through push_back() for example) or writing over an element already existing (using insert() for example).
If you add a value and the capacity of the vector is not enough to hold all values, then the the vector will automatically grow: it will create a much bigger array, copy it’s current values inside, copy the additional value too, then delete the array it had before.
It’s important to understand this: if a vector grows, then you can’t assume that it’s data is always at the same adress in memory, so pointers to it’s data can’t be trusted.
You don’t use push_back() to add a value between two values, you use insert().
The syntaxe array[x][y] += q Will certainly not do what you describe. It will add q to the value at the position array[x][y].