2013-04-07 107 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]); 
} 

和那个工作。