Вставить карту в вектор не удается во второй раз - PullRequest
0 голосов
/ 20 января 2011

У меня есть ошибка, я не могу понять, где это происходит:

Я использую карту с векторами:
map<vector<string> , vector<string> > parameterMap;

потому что мне нужно несколько из них (сколько определяется во время выполнения), я поместил их в список (вектор): объявление вектора в начале метода:
vector<map<vector<string> , vector<string> > > listedParameterMap;

вставка карты в вектор:
listedParameterMap.insert(listedParameterMap.end(), 1, parameterMap);

Эта процедура отлично работает в первый раз. Второй раз (карта заполнена правильно) не работает.
Я заметил одну вещь: я выдаю размер карты:
cout << "listedParameterMap " << listedParameterMap.size();
показанный размер равен 2 после второго раза, часы говорят, что все еще 1 Это также показывает мне проводной контент:

Скриншот: alt text

Last должен содержать что-то похожее на First Вторая карта, которая вставлена, правильно заполнена. То же самое для векторов: part1_input и part2_output

Код:

for (unsigned int index = 0; index < part1_input.size(); index++) {
        map<vector<string> , vector<string> > parameterMap;
        parameterMap.insert
        (pair<vector<string> , vector<string> > (part1_input[index], part2_output[index]));
        listedParameterMap.insert(listedParameterMap.end(), 1, parameterMap);
        cout << "listedParameterMap " << listedParameterMap.size();
}

Я действительно буду признателен за любые идеи, почему это происходит ...



EDIT:

«Решение» печатало материал. В окне наблюдения не отображаются правильные значения. Это означает, что моя проблема вызвана где-то еще. Но это здесь есть. Спасибо всем, кто пытался мне помочь!

1 Ответ

1 голос
/ 20 января 2011

Я хотел бы увидеть тест, в котором вы выводите что-то из своих коллекций, чтобы увидеть, видите ли вы то, что, по вашему мнению, вы должны увидеть.На самом деле, почему бы не написать правильный модульный тест?

Вы передаете много коллекций по значению.Это может быть довольно дорого, но, кроме того, вы, возможно, обновляете что-то, что является копией того, что, по вашему мнению, вы на самом деле обновляете, и затем не видите результатов в оригинале.внимание к значениям в окне просмотра Visual Studio, особенно если вы используете оптимизированную сборку.

...