本文整理汇总了C++中Array_::emplace_back方法的典型用法代码示例。如果您正苦于以下问题:C++ Array_::emplace_back方法的具体用法?C++ Array_::emplace_back怎么用?C++ Array_::emplace_back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Array_
的用法示例。
在下文中一共展示了Array_::emplace_back方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testMoveConstructionAndAssignment
void testMoveConstructionAndAssignment() {
Array_<double> ad1{1,2,3.5,4};
const double* p1 = ad1.data();
Array_<double> ad2{.01,.02};
const double* p2 = ad2.data();
Array_<double> ad3(ad1); // copy construction
const double* p3 = ad3.data();
SimTK_TEST(p3 != p2);
ad3 = std::move(ad1); // move assignment
SimTK_TEST(ad3.data() == p1 && ad1.data() == p3);
Array_<double> ad4(std::move(ad2)); // move construction
SimTK_TEST(ad4.data()==p2 && ad2.empty());
auto returned = returnByValue(3.25); // construction
SimTK_TEST(returned.first == std::vector<double>({1,2,3,4,5.5,3.25}));
SimTK_TEST(returned.first.data() == returned.second);
returned = returnByValue(-1); // assignment
SimTK_TEST(returned.first == std::vector<double>({1,2,3,4,5.5,-1}));
SimTK_TEST(returned.first.data() == returned.second);
// std::unique_ptr has only move construction so this won't compile if
// Array_ requires copy construction
Array_<std::unique_ptr<double>> aud;
aud.push_back(std::unique_ptr<double>(new double(5.125)));
aud.push_back(std::unique_ptr<double>(new double(3.5)));
aud.push_back(std::unique_ptr<double>(new double(-2.25)));
SimTK_TEST(aud.size()==3);
SimTK_TEST(*aud[0]==5.125 && *aud[1]==3.5 && *aud[2]==-2.25);
aud.emplace_back(new double(123.));
SimTK_TEST(aud.size()==4 && *aud[3]==123.);
aud.emplace(&aud[2], new double(100));
SimTK_TEST(aud.size()==5 && *aud[2]==100. && *aud[3]==-2.25);
}