作者loveme00835 (高髮箍)
看板C_and_CPP
標題Re: [問題] struct和vector的問題
時間Sun Oct 2 14:07:17 2011
※ 引述《hcl012 (怪龍-卡西歐魯)》之銘言:
引入一個類別:
struct Position
{
Position(
float x,
float y,
float z )
{
this->x = x;
this->y = y;
this->z = z;
}
float x, y, z;
};
呼叫時便可以使用這樣的語法:
create_box(modelbox1, Position(1, 0.5, 2), 0.5);
但是 create_box() 這個函式內部有太多相同程式碼了, 還可以修
改一下:
typedef int Coef;
Coef x_coef[] = { -1, 1, 1, -1, -1, 1, 1, -1 },
y_coef[] = { -1, -1, 1, 1, -1, -1, 1, 1 },
z_coef[] = { -1, -1, -1, -1, 1, 1, 1, 1 };
for( size_t i = 0; i !=
8; ++i )
boxmodel->m_v.push_back( Vec3f(p.x + x_coef[i]*size,
p.y + y_ceof[i]*size,
p.z + z_coef[i]*size) );
size_t
indices[] = { 1, 2, 3, 1, 3, 4, 5, 6, 7, 5, 7, 8 };
boxmodel->m_vi.assign( indices, indices +
12 );
這樣就可以把注意力分別著重在兩個面向:
(1) 初始值正不正確
(2) 賦值方法有沒有失當
粉紅底色的地方表示你儲存的是索引而非其他數值, 儲存的資料型
態不是 size_t 就是 vector<T>::size_type
黃色底色的地方表示你的元素個數均固定, 這時候
使用陣列會比
vector來得好, 因為又可以顯示出
大小不變的這個事實
還有很多需要改進的地方..你先學習如何把各程式碼片段的歸屬分
好吧...
--
★ ★ ★ ★
★ ★ ★ ███ ███ █ █▌█ ██◣ ███ ▋▋█ ★ ★ ★
█▂█ █▃█ █ ███ █▆█ █▄█ ███
★ ★ █ ◣ █ █ █ ▋██ █▆◤ ███ ███ ★ ★
Kim Jae Kyung Koh Woo Ri Cho Hyun Young Kim Ji Sook
φwindyhorse
No Eul Oh Seung A Jung Yoon Hye
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
推 hcl012:之前也有想過該怎麼像這樣用更簡潔的方式寫create_box函式 10/02 14:52
→ hcl012:這篇文章對我很有幫助,真是多謝了 10/02 14:52