变量语法强化

声明强化

在C++17之后,if语句可以像for循环语句一样,在括号里声明一个变量了。

if (int x = 5; x < 10) { x += 1; } // 必然会执行

初始化强化

C++11引入了初始化列表这一概念,在C++11之前,普通数组,非常简单的类,都可以使用{}来初始化,而一般的类又要用其他的方式初始化,各种各样的初始化非常混乱。
C++11引入一个std::initializer_list的类型,为初始化提供了统一的形式。

class Test 
{
	std::vector<int> data;
	Test(std::initializer_list<int> list) 
	{
		for (auto itr = list.begin(); itr != list.end(); ++itr)
			data.push_back(*itr);
	}
};

int main()
{
	int arr[3] = {1, 2, 3};
	std::vector<int> vec = {1, 2, 3};
	Test test{1, 2, 3};
}

结构化绑定

这个语法很像Rust的模式匹配,就是用来从复杂的容器或者类型里,解构出我们想要的类型。

std::tuple<int, double, std::string> f() { return {1, 2.3, "456"}; }

int main()
{
	auto [x, y, z] = f(); // 直接将元组中的三个成员解构出来
	std::cout << x << ' ' << y << ' ' << z << endl;
	return 0;
}

作者:st0rmKR

出处:https://www.cnblogs.com/st0rmKR/p/17501805.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   烤肉kr  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示