At naming variables sequentially : I don't know those things is the problem xD What's a vector? Is it those line things in math where planes fly and stuff? No? D:
I believe that lists in C++ are called vectors in the standard library. It's just, like...well, it's a list of things.
A vector is not a list, it's a dynamic array. C++ does have the list class if you need lists, they're implemented as doubly-linked lists (each node knows it's predecessor and it's successor).
Anyway, an array is a block of memory that holds a sequence of data. For example, we have an array called A, containing, in sequence, the numbers 1 to 7. In memory, that looks like:
|1||2||3||4||5||6||7|
Now, we can access the contents of this array. Arrays in C++ are zero-indexed, so A[0] == 1, A[1] == 2 et cetera. We can also set them. After doing A[3] = 75;, the array looks like:
|1||2||3||75||5||6||7|
Now, a vector is a dynamic array, which means it'll automatically handle resizing for you. If you use a normal array, you need to know the size beforehand and you have to do some memory twiddeling if you want to grow it, a vector does all of that for you.
Yeah, that's a job for a dictionary or two lists.
C++ calls dictionaries maps and they're the most elegant approach to this problem. using two lists is just ugly, and besides, hashing is O(1) with a very small prefactor, lookup in a list is O(n).