Как сделать вектор указателей на элементы в другом подвекторе? - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь создать вектор, содержащий указатели на каждую из первых строк в векторе вектор строк.Я собираюсь передать first_words_in_subvecs программе \bin\sort, чтобы отсортировать / распечатать их.Я подумал, что тратить время и пространство процессора на создание нового вектора реальных строк, так как я все равно буду их передавать.Правильно ли я думаю, что быстрее будет просто указывать на строки, которые я хочу отправить?И почему этот код не работает?Я не получаю никаких предупреждений или ошибок, но при запуске я вижу ошибки.

int print_sorted_subvectors(vector< vector<string> > &sorted_subsets_vec)
{   
    vector<string*>  first_words_in_subvecs;

    for(int i = 0; i < sorted_subsets_vec.size(); i++)
    {
        first_words_in_subvecs[i] = &sorted_subsets_vec[i][0];
    }
}

1 Ответ

1 голос
/ 13 февраля 2012

Вероятно, нет необходимости хранить указатели на строки в векторе. Класс std::string довольно эффективен и использует такие методы, как копирование при записи, чтобы избежать ненужных копий реальных строковых данных. Вероятно, у вас не возникнет проблем с эффективностью, если first_words_in_subvecs является обычным vector<string> (и ваш код будет проще для понимания и более надежным).

Трудно сказать, почему ваш текущий код является ошибочным. Вы уверены, что каждый подвектор sorted_subsets_vec не пуст?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...