这里是testing的代码。 元组testing: using namespace std; int main(){ vector<tuple<int,int>> v; for (int var = 0; var < 100000000; ++var) { v.push_back(make_tuple(var, var)); } } 配对testing: #include <vector> using namespace std; int main(){ vector<pair<int,int>> v; for (int var = 0; var < 100000000; ++var) { v.push_back(make_pair(var, var)); } } 我通过Linux时间命令做了时间测量。 结果是: | | -O0 | -O2 | […]
是否有一个规则说明了一个std ::元组的成员被销毁的顺序? 例如,如果Function1返回一个std::tuple<std::unique_ptr<ClassA>, std::unique_ptr<ClassB>> ,那么我可以确定(当Function2的范围剩下时) ClassB的实例被引用由第二个成员在第一个成员所指的ClassA实例之前被销毁? std::tuple< std::unique_ptr< ClassA >, std::unique_ptr< ClassB > > Function1() { std::tuple< std::unique_ptr< ClassA >, std::unique_ptr< ClassB > > garbage; get<0>(garbage).reset( /* … */ ); get<1>(garbage).reset( /* … */ ); return garbage; } void Function2() { auto to_be_destroyed = Function1(); // … do something else // to_be_destroyed leaves scope // […]