Loading

变量语法强化

声明强化

在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;
}
posted @ 2023-06-24 22:21  烤肉kr  阅读(14)  评论(0)    收藏  举报