невозможно сохранить время в векторе - PullRequest
0 голосов
/ 25 октября 2018

Я пишу основную командную оболочку на C ++ и не смог решить эту проблему, несмотря на большой поиск.Когда я пытаюсь скомпилировать свою программу, я получаю сообщение об ошибке:

ошибка: нет соответствующей функции для вызова 'std :: vector:: pop_back (std :: __cxx11 :: string &) 'times.pop_back (tmp);

Код, о котором идет речь:

int runArgs(char** args, std::vector<std::string> &histData, std::vector<std::string> &times) {

...
    // it's not a built-in command, so...
        else {
                auto before = std::chrono::high_resolution_clock::now();
                if(fork()) { // I'm the parent
                        wait(NULL);
                } else { // I'm the child
                        execvp(args[0], args);
                        // getting here means exec didn't work
                        std::cerr << "The program terminated because " << strerror(errno) << std::endl;
                }
                auto after = std::chrono::high_resolution_clock::now();
                std::chrono::duration<double> dur = after - before;
                auto x = std::chrono::duration_cast<std::chrono::seconds>(dur);
                std::string tmp = std::to_string(x.count());
                times.pop_back(tmp);
        }

Кажется, что tmp имеетбыл объявлен как указатель, и я пытаюсь дать моему вектору неправильный тип данных.Тем не менее, я не использую никаких указателей в этом разделе кода.Я пытался использовать вектор двойников, но получаю такую ​​же ошибку.Это как-то связано с передачей вектора по ссылке?Или я не понимаю, что возвращает chrono :: duration :: count?Или это что-то совсем другое?

1 Ответ

0 голосов
/ 25 октября 2018

Метод std::vector::pop_back() удаляет последний элемент из std::vector.Он не принимает никаких входных параметров, но вы пытаетесь передать его один.Это то, на что жалуется компилятор.

К добавьте новый элемент в конец std::vector, вам нужно использовать метод std::vector::push_back()вместо:

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