最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

九、藍(lán)圖與C++:Struct結(jié)構(gòu)體

2022-11-26 17:51 作者:愛玩UE5的小哥哥  | 我要投稿

拋出問題

1.什么是結(jié)構(gòu)體?

2.在什么情況下會(huì)用的結(jié)構(gòu)體

一.以管理個(gè)人信息為例拋出結(jié)構(gòu)體

假設(shè)我們要做一個(gè)管理個(gè)人信息數(shù)據(jù)的功能,比如要存儲(chǔ)很多人的姓名,年齡,性別 信息.在沒有結(jié)構(gòu)體的情況下,我們可能會(huì)這么做?

1.創(chuàng)建3個(gè)數(shù)組分別存放姓名、年齡性別

姓名數(shù)組
年齡數(shù)組
性別數(shù)組

2.輸出個(gè)人信息

3.增加一個(gè)人的信息

4.刪除一個(gè)人的信息

5.解析

從上面的操作可以看到,假如我們要存儲(chǔ)的屬性比較多,如身高,體重,生日,班級(jí),各科成績(jī)...

那豈不是每一條信息都要?jiǎng)?chuàng)建一個(gè)數(shù)組?假如有100條數(shù)據(jù),就要?jiǎng)?chuàng)建100個(gè)數(shù)組來存儲(chǔ)數(shù)據(jù).

?其次增/刪操作,每次都會(huì)對(duì)所有數(shù)組進(jìn)行操作,因?yàn)樗袛?shù)組的數(shù)據(jù)都是依靠數(shù)組索引一一對(duì)應(yīng)的,如果不對(duì)應(yīng),那么數(shù)據(jù)就混亂了,可能取數(shù)據(jù)的時(shí)候,張三的姓名,李四的年齡,王五的性別.

由此可得目前存在如下缺陷:

(1)數(shù)據(jù)擴(kuò)展不方便,每?jī)?chǔ)存一個(gè)屬性就要?jiǎng)?chuàng)建一個(gè)專門的數(shù)組

(2)數(shù)據(jù)對(duì)應(yīng)關(guān)系需要手動(dòng)維護(hù),容易出現(xiàn)對(duì)應(yīng)關(guān)系錯(cuò)誤問題

(3)數(shù)據(jù)增刪操作繁瑣,每次添加/刪除數(shù)據(jù)都要對(duì)所有數(shù)組進(jìn)行操作.

帶著這幾個(gè)問題,我們學(xué)習(xí)下struct?

二.藍(lán)圖中的Struct結(jié)構(gòu)體

1.創(chuàng)建結(jié)構(gòu)體

創(chuàng)建一個(gè)個(gè)人信息的結(jié)構(gòu)體

至此為止,我們已經(jīng)可以回答本文開頭的兩個(gè)個(gè)問題:

struct是什么:

struct是一系列變量/屬性的集合

什么時(shí)候會(huì)用到struct:

當(dāng)一條數(shù)據(jù)包含多個(gè)屬性/變量的時(shí)候

struct是一些列變量的集合這個(gè)特性也解決了數(shù)據(jù)擴(kuò)展不便的問題和數(shù)據(jù)對(duì)應(yīng)關(guān)系的問題

(1)數(shù)據(jù)擴(kuò)展不方便,每?jī)?chǔ)存一個(gè)屬性就要?jiǎng)?chuàng)建一個(gè)專門的數(shù)組

(2)數(shù)據(jù)對(duì)應(yīng)關(guān)系需要手動(dòng)維護(hù),容易出現(xiàn)對(duì)應(yīng)關(guān)系錯(cuò)誤問題

(3)數(shù)據(jù)增刪操作繁瑣,每次添加/刪除數(shù)據(jù)都要對(duì)所有數(shù)組進(jìn)行操作.

想要存儲(chǔ)一個(gè)新的屬性,只需要在結(jié)構(gòu)體中添加一個(gè)變量即可

并且一個(gè)結(jié)構(gòu)體就是一條數(shù)據(jù),數(shù)據(jù)集中在一個(gè)地方,不存在數(shù)據(jù)分散存儲(chǔ)導(dǎo)致的對(duì)應(yīng)關(guān)系混亂問題

2.使用結(jié)構(gòu)體實(shí)現(xiàn)上面的個(gè)人信息管理系統(tǒng)的增加減少信息

①輸出個(gè)人信息

②增加一個(gè)人信息

③刪除一個(gè)人信息

3)數(shù)據(jù)增刪操作繁瑣,每次添加/刪除數(shù)據(jù)都要對(duì)所有數(shù)組進(jìn)行操作.

3.藍(lán)圖中結(jié)構(gòu)體的方法

①make+結(jié)構(gòu)體名字:對(duì)結(jié)構(gòu)體填充數(shù)據(jù)

②控制結(jié)構(gòu)體變量屬性是否顯示

③控制結(jié)構(gòu)體變量屬性是否顯示

三.C++中的Struct結(jié)構(gòu)體

1.定義結(jié)構(gòu)體格式

C++中的struct可以使用USTRUCT()宏,與UCLASS()類似,可以控制struct能否在藍(lán)圖中使用(BlueprintType使struct可以在藍(lán)圖中使用).

添加了USTRCUT()宏,需要在struct中加入GENERATED_BODY()才能正常使用.

②如果明確該結(jié)構(gòu)體只在C++中使用,可以不加USTRUCT()宏 ,同樣也不需要加GENERATED_BODY()宏語法如下

③UE中的struct要以F開頭

2.C++中的結(jié)構(gòu)體代碼

以Cpp_Actor這個(gè)C++類編寫代碼

.h文件

①C++中的結(jié)構(gòu)體與藍(lán)圖結(jié)構(gòu)體用法一致

②C++中的結(jié)構(gòu)體變量進(jìn)行賦值

.cpp文件

備注:分析一個(gè)我的錯(cuò)誤理解

C++中對(duì)結(jié)構(gòu)體的變量進(jìn)行賦值后,在藍(lán)圖以這個(gè)C++聲明的結(jié)構(gòu)體創(chuàng)建一個(gè)變量,這個(gè)變量的初始值應(yīng)該就是在c++中賦值的值 這個(gè)方法是錯(cuò)誤的?。。?/span>

解釋:

在藍(lán)圖中創(chuàng)建一個(gè)結(jié)構(gòu)體的變量與在C++中 PersonInfo PersonA(創(chuàng)建結(jié)構(gòu)體對(duì)象)其實(shí)是一個(gè)道理,在沒有賦值的情況下這個(gè)藍(lán)圖結(jié)構(gòu)體變量與C++中的結(jié)構(gòu)體對(duì)象都是空的,所以要賦值操作

3.C++中的結(jié)構(gòu)體數(shù)組使用

.h文件

.cpp文件


四.利用結(jié)構(gòu)體結(jié)合UMG做個(gè)人管理系統(tǒng)



①創(chuàng)建個(gè)人信息結(jié)構(gòu)體

②個(gè)人信息的UI(刪除)

③個(gè)人信息列表UI(添加)

跟上面的藍(lán)圖刪除信息的邏輯一樣


九、藍(lán)圖與C++:Struct結(jié)構(gòu)體的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
秦皇岛市| 方城县| 会昌县| 阿勒泰市| 泽州县| 镇安县| 登封市| 望都县| 宁远县| 麻江县| 霍邱县| 澄迈县| 合江县| 铁岭市| 康马县| 瓦房店市| 凤山市| 南京市| 昌平区| 茂名市| 祁连县| 马龙县| 阿瓦提县| 简阳市| 镇原县| 台北县| 句容市| 金平| 彰化县| 涞水县| 垫江县| 昂仁县| 台中县| 浦东新区| 卫辉市| 桃源县| 资中县| 菏泽市| 龙江县| 长沙市| 拉孜县|