C++11 C++;11:从向量的向量访问成员函数

C++11 C++;11:从向量的向量访问成员函数,c++11,C++11,如何从向量向量访问此类函数 someNamespace::SomeClass*测试; 测试->剂量测定() 如果我想拥有同一类的多个实例,我会这样给出: std::vectortest test.resize(SomeValueofSize\u t) “test”的实例数在运行时是已知的 这就是我现在访问doSomething()的方式 测试[0][0]。doSomething() 代码可以编译,但我不确定这是否是正确的方法。我不清楚为什么有类对象的二维向量,但要按照您的要求执行,您应该像@nw

如何从向量向量访问此类函数

someNamespace::SomeClass*测试;
测试->剂量测定()

如果我想拥有同一类的多个实例,我会这样给出:

std::vectortest
test.resize(SomeValueofSize\u t)

“test”的实例数在运行时是已知的

这就是我现在访问
doSomething()
的方式

测试[0][0]。doSomething()


代码可以编译,但我不确定这是否是正确的方法。我不清楚为什么有类对象的二维向量,但要按照您的要求执行,您应该像@nwp建议的那样迭代这两个维度

假设您有一个名为
test
的对象向量
someClass
,而不是指向
someClass
实例的指针,即
std::vector test
您只需像这样迭代它们,然后调用
doSomething()
。如果
doSomething()
必须修改
test
对象,只需删除
const

for (const auto& element : test)
{
    for (const auto& obj : element)
    {
        obj.doSomething();
    }
}

对于您显示的代码,它是不正确的。您可以调整
test
的大小,这将为您提供一组空向量
test[0]
提供第一个向量,然后
test[0][0]
尝试访问第一个向量的第一个
someNamespace::SomeClass
,但由于该向量为空,因此该元素不存在。但这可能只是因为代码简化得太多了。访问语法本身是正确的。继续访问是否正确:test[i][0];或者它总是测试[0][i];我是迭代器,它们做不同的事情<代码>测试[i][0]
迭代向量并查看每个向量的第一个元素<代码>测试[0][i]
迭代第一个向量的所有元素。哪一个是正确的取决于您想做什么。如果我总是想为不同的
测试访问
doSomething()
,我会执行测试[I][0]。当然,您可以这样做。但是使用
test[0][i].doSomething()
也将访问不同
someNamespace::SomeClass
s的
doSomething
。如果您想对所有这些函数调用该函数,则需要使用2个循环并执行
test[i][j].doSomething()
。除非您知道第一个
向量
必须正好有一个元素,否则在这种情况下,您不应该使用
向量