So I have a vector of test elements (`teste`) in my code so I can check the adding and removing of elements in one of my functions. It is defined as follows:

```
std::vector<GLuint> teste = {
        0, 1, 2,
        4, 3, 5
};

```

I then later on have a function print this and the element vector produced by my function

```
for(size_t i = 0; i < TestBuffer.Elements.size(); ++i){
    std::cout << "!" << i << std::endl;
    std::cout << TestBuffer.Elements[i] << std::endl;
    std::cout << teste[i] << std::endl;
}

```

It produces the following output

```
!0
0
0
!1
1
1
!2
2
2
!3
4
4
!4
3
4294967293
!5
5
4

```

How in the heck is this happening? *NOTHING* edits `teste` after it has been defined. Also the value for `teste[4]` doesn't change (NOTE: I don't think that value is `GLuint`'s max value as a `GLuint -1` has a value of `244294967295`).

EDIT:
I'm not going to include all the code because its over 1000 lines and no one wants to read that. [Here](http://pastebin.com/bqTMXKcr) are the functions that edit `TestBuffer` (a `BufferData`) and [here](http://pastebin.com/sgEEJmGd) is where `teste` is declared and used.

Also this is using OpenGL and so a GLuint is an OpenGL unsigned int.