C++:std::tuple的使用

std::pair

	auto pair = std::make_pair("name", 44);//创建一个数据对
	pair.second = 33;//通过first,second可以访问数据成员
	std::cout << pair.second;

std::tuple

tuple可以将任意多个类型的数据进行绑定为一个数据元组。常用于函数多返回值的返回

 std::tuple<std::string, int, double> StructBind() {
	 return  std::tuple(std::string("wang"), 26, 79.0);
}

int main(){
	std::tuple<std::string, int, double> person = StructBind();
	auto new_tuple = std::make_tuple(2.3f, 3);//可以使用make_tupe创建一个新的tupe
	std::cout << std::get<0>(person) << std::get<1>(person) << std::get<2>(person) << '\n';//tuple的数据访问只能通过std的标准函数get();
	//std::get()会返回对应数据的引用。
}

tuple不支持隐式类型转换。

std::tie

std::tie可以将一组数据进行绑定,对这一组数据进行集体的赋值操作;例如:

	std::string name;
	int age;
	double grade;
	std::tie(name, age, grade) = StructBind();//tie里面使用的变量需要提前声明

结构化绑定

c++17中除了可以使用tuple对多个元素进行返回值的接收以外,还可以使用结构化绑定的方式进行数据返回值接收。

	auto[name, age, grade] = StructBind();//元组返回后,直接绑定在一个变量中,这个变量不需要声明,后面可以直接使用。
	name = "newname";

你可能感兴趣的:(c++,c++,开发语言)