无法将时序存储到向量中

时间:2018-10-25 02:56:01

标签: c++ timing

我正在用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 :(得分:2)

std::vector::pop_back()方法删除 std::vector中的最后一个元素。它不接受任何输入参数,但是您尝试将其传递给它。那就是编译器所抱怨的。

要将新元素添加std::vector的末尾,您需要改用std::vector::push_back()方法:

times.push_back(tmp);