前进或前进;如何确定在我的类使用情况下首选哪个?

问题描述 投票:0回答:2
class Test {
public:
    typedef std::set<std::pair<double, double>> DataSet;

    explicit Test(const DataSet&& d) {
        for (auto &itr : d) {
            std::cout << "value1 = " << itr.first << '\n';
            std::cout << "value2 = " << itr.second << '\n';
        }
    }

};

int main() {
    //using namespace util;
    try {
        // Forwarding
        Test obj( std::forward<Test::DataSet>(
            { 
              { 10.0, 20.0 },
              { 30.0, 40.0 },
              { 50.0, 60.0 }
            }
        ));

        std::cout << '\n';

        // Move
        Test obj2(std::move(Test::DataSet(
            {
              { 10.0, 20.0 },
              { 30.0, 40.0 },
              { 50.0, 60.0 }
            }
           )
        ));

    } catch (const std::exception& e) {
        std::cerr << e.what() << std::endl;
        return EXIT_FAILURE;
    }

    return EXIT_SUCCESS;
}
c++ c++17 std move-semantics perfect-forwarding
2个回答
5
投票

都不是


1
投票

ISO核心准则中advice的有用位。这表明您应该首选(const T&),但是如果您确实需要速度,请特别添加(T &&)。这样,您可以将小集传递为

© www.soinside.com 2019 - 2024. All rights reserved.