C++函數(shù)可以利用vector容器實現(xiàn)函數(shù)返回多個值
#include <iostream>
#include <vector>
using namespace std;
// C++函數(shù)可以利用vector容器實現(xiàn)函數(shù)返回多個值
// 返回一個vector變量,并打印vec的地址和存放在容器中第一個數(shù)據(jù)的首地址
vector<float> fun(int * x, int * y)
{
vector<float> vec;
// 創(chuàng)建一個用于儲存結果的vector
int temp;
temp = *x; ? ?/* 保存地址 x 的值 */
*x = *y; ? ? ?/* 把 y 賦值給 x */
*y = temp; ? ?/* 把 x 賦值給 y */
int sum1 =*x + *y;
int minus1 =*x - *y;
int product1 =*x * *y;
float quotient1 = (float)*x / *y;
vec.push_back(*x); ? ? ? ? ?// 添加一個元素 *x
vec.push_back(*y); ? ? ? ? ?// 添加一個元素 *y
vec.push_back(sum1); ? ? ? ?// 添加一個元素
vec.push_back(minus1); ? ? ?// 添加一個元素
vec.push_back(product1); ? ?// 添加一個元素
vec.push_back(quotient1); ? // 添加一個元素
cout << "fun():&vec ? ? ? ? " << &vec << endl;
cout << "fun():&vec[0] ? ? ?" << &vec[0] << endl;
// ? ?cout << "After swap, a is " << vec[0] << endl;
// ? ?cout << "After swap, b is " << vec[1] << endl;
// ? ?cout << "sum is ? ? ?" << vec[2] << endl;
// ? ?cout << "minus is ? ?" << vec[3] << endl;
//????cout << "product is ?" << vec[4] << endl;
//????cout << "quotient is " << vec[5] << endl;? ?
return vec; ? // 返回vector
}
int main()?
{
vector<float> vec;
// 創(chuàng)建一個接收用結果的vector(名稱vec任意)
// 局部變量聲明
int a = 100;
auto b = 205; ?// auto可以自動根據(jù)右值判斷左值的類型
cout << "------------Before-------------" <<endl;
cout << "Before swap, a is ?" << a << endl;
cout << "Before swap, b is ?" << b << endl;vec = fun(&a,&b); ? ? ? ? ? // 接收傳來的參數(shù)
cout << "------------After-------------" <<endl;
cout << "After swap, a is ? " << a << endl; ? ? ? // ☆☆利用指針(的引用)帶回
cout << "After swap, a is ? " << vec[0] << endl; ?// ☆☆利用返回值帶回
cout << "After swap, b is ? " << b << endl;
cout << "After swap, b is ? " << vec[1] << endl;
cout << "sum is ? ? ? ? ? ? " << vec[2] << endl;
cout << "minus is ? ? ? ? ? " << vec[3] << endl;
cout << "product is ? ? ? ? " << vec[4] << endl;
cout << "quotient is ? ? ? ?" << vec[5] << endl;
cout << "main():&vec ? ? ? ?" << &vec << endl;
cout << "main():&vec[0] ? ? " << &vec[0] << endl;
vector<float>().swap(vec); ?// vec便是需要清空的容器。
return 0;
}
//————————————————
// 本文參考了CSDN博主「愛拍凱特」的文章,
// 鏈接:https://blog.csdn.net/apacat/article/details/111502396
/ 總結起來就是:
// vector與動態(tài)數(shù)組性質(zhì)相同。
// 具體數(shù)據(jù)存放在堆區(qū)。
// 變量名存放在棧區(qū)。
// 變量名中存放的是堆區(qū)的首地址。(故,swap前后,存放在容器中第一個數(shù)據(jù)的首地址不改變)