Vector of std::chrono::milliseconds
Vector of std::chrono::milliseconds
我需要在一些迭代中测量应用程序的一些时间(毫秒)。为此,我想使用std::chrono-Library。现在我想创建一个毫秒的向量,这样我就可以把所有测量到的时间存储在这个向量里。之后,我想对向量进行排序以获得中位数。
但我目前无法创建一个向量。我不知道应该用哪种类型来创建它。有人知道这是怎么回事吗?我的问题找不到答案。
这是我到目前为止所尝试的:
vector<chrono::milliseconds> times;
for(int z = 0; z < 10; z++){
auto start = chrono::high_resolution_clock::now();
//... the application to measure
auto end = chrono::high_resolution_clock::now();
auto elapsedtime = chrono::duration_cast<chrono::milliseconds>(end - start).count();
times.push_back(elapsedtime);
}
std::sort(times.begin(), times.end());
std::cout << "Median: " << times.at(times.size()/2) << "(ms)" << endl;
您的矢量类型对于存储std::chrono::duration
是正确的。创建vector时不应出现错误
然而,有一个错误,当你试图在这里填充向量:
auto elapsedtime = chrono::duration_cast<chrono::milliseconds>(end - start).count();
times.push_back(elapsedtime);
将运行时间设置为std::duration::count
返回的值,该值返回持续时间的内部tickcount。它的类型是std::duration::rep
。只要去掉计数就可以了
您的问题是elapsedtime
不是chrono::milliseconds
,而是chrono::milliseconds::rep
。你可以这样做:
#include <iostream>
#include <vector>
#include <algorithm>
#include <chrono>
int main() {
using namespace std;
vector<chrono::milliseconds> times;
for(int z = 0; z < 10; z++) {
auto start = chrono::high_resolution_clock::now();
//... the application to measure
auto end = chrono::high_resolution_clock::now();
auto elapsedtime = chrono::duration_cast<chrono::milliseconds>(end - start).count();
times.push_back(chrono::milliseconds(elapsedtime));
}
std::sort(times.begin(), times.end());
std::cout << "Median: " << times.at(times.size()/2).count() << "(ms)" << endl;
}
或:
#include <iostream>
#include <vector>
#include <algorithm>
#include <chrono>
int main() {
using namespace std;
vector<chrono::milliseconds::rep> times;
for(int z = 0; z < 10; z++) {
auto start = chrono::high_resolution_clock::now();
//... the application to measure
auto end = chrono::high_resolution_clock::now();
auto elapsedtime = chrono::duration_cast<chrono::milliseconds>(end - start).count();
times.push_back(elapsedtime);
}
std::sort(times.begin(), times.end());
std::cout << "Median: " << times.at(times.size()/2) << "(ms)" << endl;
}
或者
#include <iostream>
#include <vector>
#include <algorithm>
#include <chrono>
int main() {
using namespace std;
vector<chrono::milliseconds> times;
for(int z = 0; z < 10; z++) {
auto start = chrono::high_resolution_clock::now();
//... the application to measure
auto end = chrono::high_resolution_clock::now();
auto elapsedtime = chrono::duration_cast<chrono::milliseconds>(end - start);
times.push_back(elapsedtime);
}
std::sort(times.begin(), times.end());
std::cout << "Median: " << times.at(times.size()/2).count() << "(ms)" << endl;
}
(live at coliru)
相关文章:
- 从持续时间构造std::chrono::system_clock::time_point
- 如何在c++迭代器类型中包装std::chrono
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 使用 memcpy() 复制到 std::chrono::milliseconds 会给出错误 -Werror=clas
- std::multimap<std::chrono::milliseconds, T>::rbegin 在 MSVS-13 中指向 end()?
- 如何在C++中将 chrono::秒转换为 HH:MM:SS 格式的字符串?
- C++ Chrono 确定一天是否是周末?
- std::adjacent_difference with std::chrono time_point
- VSCode 说 std::chrono 是模棱两可的,如果运算符<<重载
- 是否确保 2 个连续的 std::chrono::steady_clock::now() 不相等?
- std::chrono::d uration 可以按秒初始化,但不能按毫秒初始化?
- chrono::month 和 chrono::month 有什么区别
- 比较两个 std::chrono::time_point 实例时出错
- 来自 std::chrono 的编译器警告,但未被使用
- 从编译时已知的日历日期创建"std::chrono::time_point"
- std::chrono::time_point from std::string
- 访问和存储/解析性std :: Chrono ::持续时间:: milliseconds(cpprest)时使用什么类型
- 如何将“ std :: chrono :: milliseconds”铸造为`boost :: posix_time :
- Vector of std::chrono::milliseconds
- boost::posix_time::milliseconds与boost::chrono::milliseconds的