2013-04-07 161 views
0

我是C++的新手。我想在'vector'中打印一些值。如何在矢量中打印內容

vector<GLubyte> m_coneIndices; 
m_coneIndices.resize(m_bodyIndexCount + m_diskIndexCount); 
vector<GLubyte>::iterator index = m_coneIndices.begin(); 

// Body triangles 
for (int i = 0; i < coneSlices * 2; i += 2) { 
    *index++ = i; 
    *index++ = (i + 1) % (2 * coneSlices); 
    *index++ = (i + 3) % (2 * coneSlices); 
} 


// Disk triangles 
for (int i = 1; i < coneSlices * 2 + 1; i += 2) { 
    *index++ = diskCenterIndex; 
    *index++ = i; 
    *index++ = (i + 2) % (2 * coneSlices); 
} 

這就是存儲在'vector'中的值。我試過像

cout << "indices"<< "\n"; 

for (int i=0; i<(coneSlices * 2); i+=2) { 

    cout << m_coneIndices[i] << ' ' << m_coneIndices[i+1] << ' ' << m_coneIndices[i+2] << ' ' << "\n"; 
} 

並且打印了一些垃圾值。讓我知道這段代碼有什麼問題。

+0

你確定這些尺寸是正確的嗎?在你的循環中,我看到「i + = 2」,但你更新了矢量中的三個值......所以它應該是「i + = 3」我認爲。您可以像使用數組一樣使用矢量,例如使用「coneIndices [i] = ...」。 – fen 2013-04-07 10:07:08

+1

你正在爲你的'矢量'做可怕的事情。 * Stahp!* – 2013-04-07 10:11:55

+0

我從http://examples.oreilly.com/9780596804831/找到了此代碼,位於TouchCone部分 – rakeshNS 2013-04-07 10:31:19

回答

0

使用push_back添加到載體

vector<GLubyte> m_coneIndices; 

// Body triangles 
for (int i = 0; i < coneSlices * 3; i += 3) { 
    m_coneIndices.push_back(i); 
    m_coneIndices.push_back((i + 1) % (2 * coneSlices)); 
    m_coneIndices.push_back((i + 3) % (2 * coneSlices)); 
} 

// Disk triangles 
for (int i = 1; i < coneSlices * 2 + 1; i += 2) { 
    m_coneIndices.push_back(diskCenterIndex); 
    m_coneIndices.push_back(i); 
    m_coneIndices.push_back((i + 2) % (2 * coneSlices)); 
} 

打印:

cout << "indices"<< "\n"; 

for (size_t i = 0; i< m_coneIndices.size(); i+=3) { 
    cout << m_coneIndices[i*3] << ' ' << m_coneIndices[i*3+1] << ' ' << 
      m_coneIndices[i*3+2] << ' ' << "\n"; 
} 
0

我在做正確的。我改變了代碼

for (int i=0; i<(coneSlices * 2); i+=2) { 

    printf("%d ",(int)m_coneIndices[i]); 
} 

和那個工作。