动态创建和填充数组

时间:2018-05-18 06:31:24

标签: c++ arrays

我有一个使用像这样的对象填充的数组 -

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初始化值太多。我不能以这种方式初始化我的矢量?如果没有人可以建议怎么做?

提前致谢!

2 个答案:

答案 0 :(得分:1)

你不这样做。

如果你想做任何动态的事情,你不会使用C风格的普通数组。您只需将其包装在另一个std::vector中,因为它支持动态大小。

答案 1 :(得分:1)

  

[...]因为我的进一步逻辑依赖于这个数组,代码很长   回来实现了...那不是用矢量

这不是不使用矢量的好理由。如果您需要c-array,仍然可以将std::vector::data()std::vector::size()结合使用。即使你在某些地方需要c-arrays,也几乎没有理由把c-array更喜欢std :: vector。