我可以对带变量的向量使用C ++ 11 list-initializer语法吗?

时间:2015-06-09 14:30:25

标签: c++ c++11

我有一些双重变量:a,b,c ...... 我想构造一个向量v,如v [0] = a,v [1] = b等 我可以使用C ++ 11列表初始化器吗?即这种语法:

std::vector<double> v{a,b,c};

如果不是,有没有办法直接这样做,没有多次pushback()?

2 个答案:

答案 0 :(得分:0)

您可以使用此在线C ++编译器轻松回答这样的问题:http://webcompiler.cloudapp.net/

我试过这个并且有效:

#include <vector>
int main()
{
    double a{}, b{}, c{};
    std::vector<double> v{a,b,c};
}

答案 1 :(得分:0)

@Chris Guzak的帖子模仿:)

我试过这个并且有效:

#include <iostream>
#include <functional>
#include <vector>


int main() 
{
    double a = 1.1, b = 2.2, c = 3.3;

    std::vector<double> v { std::cref( a ), std::cref( b ), std::cref( c ) };

    for ( double x : v ) std::cout << x << ' ';
    std::cout << std::endl;
}

再模仿一次。

哇!我试过这个并且有效:

#include <iostream>
#include <vector>

int main() 
{
    double a = 1.1, b = 2.2, c = 3.3;

    std::vector<double> v;
    v.reserve( 3 );

    for ( auto x : { a, b, c } ) v.push_back( x );

    for ( double x : v ) std::cout << x << ' ';
    std::cout << std::endl;
}

还有一个

我试过这个并且有效:

#include <iostream>
#include <vector>

int main() 
{
    double a = 1.1, b = 2.2, c = 3.3;

    std::vector<double> v;

    v.insert( v.end(), { a, b, c } );

    for ( double x : v ) std::cout << x << ' ';
    std::cout << std::endl;
}

哦,我试过这个,它也有效:

#include <iostream>
#include <vector>

int main() 
{
    double a = 1.1, b = 2.2, c = 3.3;

    std::vector<double> v;

    v.assign( { a, b, c } );

    for ( double x : v ) std::cout << x << ' ';
    std::cout << std::endl;
}

我没有尝试过什么?:)