所以我一直在阅读多个(和重新发布的)c ++书籍并学习矢量,他们都告诉我要定义一个这样的矢量:
vector<int> v1 = {4 ,3 ,5};
Run Code Online (Sandbox Code Playgroud)
但是当我编译它时(我在代码块中使用gnu gcc编译器)它会出现这个错误
在c ++ 98中,'v1'必须由构造函数初始化,而不是由'{...}'初始化, 并且我还得到另一个那个sais:无法从'大括号封装初始化列表'中转换'{ 4,3,5 }'到'std :: vector v1'
如果你能帮助我,我会非常感激.我确实包括了矢量库.
我一直在阅读Bjarne Stroustrup写的一本优秀的书,他建议你尽可能晚地声明变量,最好在你使用它之前,但是它没有提到任何好处而不是在函数体的开头迟到声明变量.
那么像这样延迟声明变量有什么好处:
int main()
{
/* some
code
here
*/
int MyVariable1;
int MyVariable2;
std::cin >> MyVariable1 >> MyVariable2;
return(0);
}
Run Code Online (Sandbox Code Playgroud)
而不是像这样的函数体的开头:
int main()
{
int MyVariable1;
int MyVariable2;
/* some
code
here
*/
std::cin >> MyVariable1 >> MyVariable2;
return (0);
}
Run Code Online (Sandbox Code Playgroud) 作为程序员,我被教会更喜欢关键字内联到小函数的宏定义.我知道由于宏定义不进行类型检查,内联已知更安全,但是我被告知内联只是请求编译器实际替换代码,并且编译器不必接受该请求,所以我想知道宏请求还是保证没有超时?