我有一个使用像这样的对象填充的数组 -
Set<String> supportsUrlProperties = new HashSet<>()
Map<String, Constrained> constraints = domainObject.getConstraintsMap()
if(constraints) {
constraints.values().each { Constrained constrained ->
DefaultConstrainedProperty propertyToCheck = constrained.properties?.property as DefaultConstrainedProperty
if(propertyToCheck) {
def supportsToUrlConstraint = propertyToCheck.getMetaConstraintValue('supportsToUrl')
if (supportsToUrlConstraint != null && BooleanUtils.isTrue(supportsToUrlConstraint as Boolean)) {
supportsUrlProperties.add(propertyToCheck.getPropertyName())
}
}
}
}
条件是,如果 object.data1.size()== 0 我不想将其推入数组。在这种情况下,我想像这样填充我的数组 -
const std::map<Id, std::vector<Data>> *const DataSets[]=
{
&object.data1,
&object.data2,
&object.data3,
&object.data4
};
更新 我现在使用std :: vector而不是数组,并尝试将数据初始化为数组 -
const std::map<Id, std::vector<Data>> *const DataSets[]=
{
&object.data2,
&object.data3,
&object.data4
};
我收到错误:E0146初始化值太多。我不能以这种方式初始化我的矢量?如果没有人可以建议怎么做?
提前致谢!
答案 0 :(得分:1)
你不这样做。
如果你想做任何动态的事情,你不会使用C风格的普通数组。您只需将其包装在另一个std::vector
中,因为它支持动态大小。
答案 1 :(得分:1)
[...]因为我的进一步逻辑依赖于这个数组,代码很长 回来实现了...那不是用矢量
这不是不使用矢量的好理由。如果您需要c-array,仍然可以将std::vector::data()
与std::vector::size()
结合使用。即使你在某些地方需要c-arrays,也几乎没有理由把c-array更喜欢std :: vector。