我有一些双重变量:a,b,c ...... 我想构造一个向量v,如v [0] = a,v [1] = b等 我可以使用C ++ 11列表初始化器吗?即这种语法:
std::vector<double> v{a,b,c};
如果不是,有没有办法直接这样做,没有多次pushback()?
答案 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;
}
我没有尝试过什么?:)