C++ 为什么我的函数计时器总是给出零作为输出?

C++ 为什么我的函数计时器总是给出零作为输出?,c++,hash,runtime,clock,C++,Hash,Runtime,Clock,我的时间一直是零。我需要计算通过哈希表进行搜索的总时间和平均时间。有人能告诉我我做错了什么吗 void HashTable_chaining::SearchChainingHT(vector<string> QueryArray) { clock_t start, stop, time = 0; int i = 0; while(i != QueryArray.size()) { start = clock(); fin

我的时间一直是零。我需要计算通过哈希表进行搜索的总时间和平均时间。有人能告诉我我做错了什么吗

void HashTable_chaining::SearchChainingHT(vector<string> QueryArray)
{
    clock_t start, stop, time = 0;
    int i = 0;
    while(i != QueryArray.size())
    {
        start = clock();
        find(QueryArray[i]);
        stop = clock();
        time += stop - start;
        i++;
    }
    time = (double)(time/CLOCKS_PER_SEC)*1000;
    cout << "\nThe total time for Search Chaining was " << time << "\nThe average time was " << time/QueryArray.size();
}

您正在进行整数除法:

(double)(time/CLOCKS_PER_SEC)*1000;
您希望将演员阵容改为:

此外,我不知道为什么要将它赋回时间,因为这是一个整数变量。如果希望以毫秒为单位,则可能需要将其显式化:

cout << "\nThe total time for Search Chaining was " << time << "  (milliseconds)" << ...
编辑:

由于水平滚动,我最初忽略了这一点,但在打印行的末尾还有整数除法:

.. << "\nThe average time was " << time/QueryArray.size();

您可能还需要将该值转换为双倍。

您正在进行整数除法:

(double)(time/CLOCKS_PER_SEC)*1000;
您希望将演员阵容改为:

此外,我不知道为什么要将它赋回时间,因为这是一个整数变量。如果希望以毫秒为单位,则可能需要将其显式化:

cout << "\nThe total time for Search Chaining was " << time << "  (milliseconds)" << ...
编辑:

由于水平滚动,我最初忽略了这一点,但在打印行的末尾还有整数除法:

.. << "\nThe average time was " << time/QueryArray.size();

您可能想将该时钟设置为双倍。

神秘回答了您的问题,但我建议您不要使用时钟。如果您的编译器支持C++11,那么有一个更好的选项,include


神秘回答了你的问题,但我建议你不要使用时钟。如果您的编译器支持C++11,那么有一个更好的选项,include


你的问题与非常相似,我的答案适用于这里,不要计算一个运算,而是一百万个运算。

你的问题与非常相似,我的答案适用于这里,不要计算一个运算,而是一百万个运算。

由于时间是在or中声明的标准函数,我不会给局部变量取相同的名称。在这种情况下,这可能无关紧要,但读者可能会感到困惑。因为时间是在或中声明的标准函数,所以我不会给局部变量起相同的名称。在这种情况下,这可能无关紧要,但读者可能会感到困惑。