gpt4 book ai didi

c++ - Vector of Vectors of CStrings初始化和使用

转载 作者:搜寻专家 更新时间:2023-10-31 01:50:43 24 4
gpt4 key购买 nike

我正在尝试创建一个 Vector of Vectors of CStrings; CString 的二维数组。这将表示表中的数据。 (当然,所有数据都是 CString)。

这是我尝试初始化 Vector 的方法>

std::vector<std::vector<CString>> tableData;
for(int r = 0; r < oTA.rows; r++)
for(int c = 0; c < oTA.cols; c++)
tableData[r][c] = "Test";

下面是我尝试使用它的方式

for(int r = 0; r < tabAtt.rows; r++)
{
// TextYpos = bottom of table + 5(padding) + (row height * row we're on)
HPDF_REAL textYpos = tabAtt.tabY + 5 + (r*tabAtt.rowH);
for(int c = 0; c < tabAtt.cols; c++)
{
// TextXpos = left of table + 5(padding) + (col width * col we're on)
HPDF_REAL textXpos = tabAtt.tabX + 5 + c*tabAtt.colW;
HPDF_Page_TextOut (page, textXpos, textYpos, (CT2A)tableData[r][c]); // HERE!
}
}

但我认为我没有正确初始化它。我不断收到 vector 越界错误。

最佳答案

这是因为您需要在访问它们之前分配内存并构建 vector 元素。这应该有效:

std::vector<std::vector<CString>> tableData;
for(int r = 0; r < oTA.rows; r++)
{
tableData.push_back(std::vector<CString>());
for(int c = 0; c < oTA.cols; c++)
tableData.back().push_back("Test");
}

或者,效率稍微高一点:

std::vector<std::vector<CString>> tableData(oTA.rows,std::vector<CString>(oTA.cols));
for(int r = 0; r < oTA.rows; r++)
for(int c = 0; c < oTA.cols; c++)
tableData[r][c]="Test";

关于c++ - Vector of Vectors of CStrings初始化和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com