标签: dynamic-arrays

SomeClass*initialEl = new SomeClass [5];

应该SomeClass*initialEl = new SomeClass [5]; 必须编译,假设SomeClass没有非公开声明的默认构造函数?考虑:

/*
 * SomeClass.h
 *
 */

#ifndef SOMECLASS_H_
#define SOMECLASS_H_

class SomeClass
{

public:
    SomeClass(int){}
    ~SomeClass(){}
};

#endif /* SOMECLASS_H_ */


/*
 * main.cpp
 *
 */

#include "SomeClass.h"

int main()
{
    SomeClass* initialEl = new SomeClass[5];

    delete[] initialEl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ memory-management class dynamic-memory-allocation dynamic-arrays

0
推荐指数
1
解决办法
163
查看次数

在php中动态创建数组

我试图动态创建数组,然后通过使用变量构造数组名称来填充它们,但我收到以下警告

警告:in_array()期望参数2为数组,给定为null警告:array_push()期望参数1为数组,给定为null

对于单个数组,此方法有效,但对于数组数组,这不起作用.该怎么做?

<?php

for ($i = 1; $i <= 23; ++$i) 
{
        $word_list[$i] = array("1"); 
}


for ($i = 1; $i <= 23; ++$i) 
{
  $word = "abc";
  $arrayName = "word_list[" . $i . "]";
  if(!in_array($word, ${$arrayName})) 
  {
    array_push($$arrayName , $word);
  }
}


?>
Run Code Online (Sandbox Code Playgroud)

php arrays dynamic-arrays

0
推荐指数
1
解决办法
2万
查看次数

为什么600MB后动态内存分配失败?

我使用三维char数组实现了一个bloom过滤器(位表),它运行良好,直到达到无法再分配内存并给出bad_alloc消息的程度.在分配600MB后,它在下一个扩展请求中给出了这个错误.

布隆过滤器(阵列)预计会增长到8到10GB.

这是我用来分配(扩展)位表的代码.

unsigned char ***bit_table_=0;
unsigned int ROWS_old=5;
unsigned int EXPND_SIZE=5;


void expand_bit_table()
     {
         FILE *temp;
         temp=fopen("chunk_temp","w+b");
         //copy old content
         for(int i=0;i<ROWS_old;++i)
             for(int j=0;j<ROWS;++j)
                 fwrite(bit_table_[i][j],COLUMNS,1,temp);
         fclose(temp);
         //delete old table
         chunk_delete_bit_table();
         //create expanded bit table ==> add EXP_SIZE more rows
         bit_table_=new unsigned char**[ROWS_old+EXPND_SIZE];
         for(int i=0;i<ROWS_old+EXPND_SIZE;++i)
            {
                bit_table_[i]=new unsigned char*[ROWS];
                for(int k=0;k<ROWS;++k)
                    bit_table_[i][k]=new unsigned char[COLUMNS];
            }
         //copy back old content

          temp=fopen("chunk_temp","r+b");
         for(int i=0;i<ROWS_old;++i)
         {
            fread(bit_table_[i],COLUMNS*ROWS,1,temp);
         }
          fclose(temp);
         //set remaining content of bit_table_to 0
         for(int i=ROWS_old;i<ROWS_old+EXPND_SIZE;++i)
             for(int j=0;j<ROWS;++j)
                 for(int k=0;k<COLUMNS;++k) …
Run Code Online (Sandbox Code Playgroud)

c++ bitarray bad-alloc dynamic-arrays

0
推荐指数
1
解决办法
1742
查看次数

无法创建动态整数数组

我确定这是一个小的但我一直在初始化错误,关于我如何在初始化之前继续尝试使用它.

#include <iostream>
using namespace std;
int main()
{
    int* ordered;

    ordered[0] = 5;
    cout << ordered[0];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

奖金问题,我可以*ordered用来访问起始地址并使用循环数组*ordered++吗?

c++ arrays integer dynamic dynamic-arrays

0
推荐指数
1
解决办法
125
查看次数

动态的void指针数组是C中游戏开发的性能问题吗?

下学期,我将用C进行游戏(特别是C89).来自C#等高级语言,我要做的第一件事就是制作一个实体列表(游戏对象),每一帧,循环遍历每个实体并运行他们的Update和Draw方法.将这种意识形态转换为C,我的想法是开发一个"List"结构,它包含一个指向void指针数组的指针,并使函数能够从列表中添加,获取和删除条目.如果将对象添加到List但数组太小,则将数组重新分配为两倍大的数组.有了这个系统,当我生成一个敌人时,我可以将一个指向其Entity结构的指针添加到List中,然后每个帧循环遍历List,将每个void指针元素作为指向实体的指针,然后将它传递到entity_update(Entity *)entity_draw(Entity *)相应的方法.

在我看来,只要我100%确定只在List数组中放入指向Entity结构(转换为void指针)的指针,就不会有任何问题......但是当我向同学提到这个时,他说他认为将void指针转换为指向其他东西的指针存在性能缺陷.从我可以看出,在互联网上环顾四周,真正的问题是编译器无法正确优化代码,因为编译器事先知道指针指向哪种类型.在我的情况下,这最终会成为一个问题吗,我想循环通过一个潜在的大型虚拟指针数组,每秒六十次?在实体指针数组中存储指向实体的指针并没有什么大不了的,具有大的,预定义的最大大小,然后进行绑定检查以确保如果没有剩余空间则不会产生敌人数组......但我只是想在开始研究游戏的基本底层引擎之前确定一下.

c void-pointers c89 dynamic-arrays

0
推荐指数
1
解决办法
365
查看次数

C++中两个向量之间的元素交换

我有一个有趣的问题.我在这里简化它.

我有一个包含的a = { 13, 56, 76, 24} 向量:另一个向量包含:b = { 2, 74, 16, 29}

我想交换价值观,让我们说562.所以我希望我的数组是:

a = {13, 2, 76, 24} b = {56, 74, 16, 29}

所以问题是:我向我的向量添加值,我push_back不知道这些值在每个向量中的存储位置.所以我知道2矢量中有某处,矢量中b56某处a.我该如何进行此更改?

c++ arrays vector dynamic-arrays

0
推荐指数
1
解决办法
137
查看次数

如何正确清理阵列?C++

我想清除并将动态数组的所有元素设置为0.我想我可以做到

  • 一个for循环并将它们全部设置为0或NULL,具体取决于类型
  • 或者我可以删除它,并重新分配一个大小相同的新数组

从长远来看,在良好实践方面,我应该避免过度使用delete [] somePointer和new(如果我正确地清理它),还是它真的没有任何区别?

c++ dynamic-arrays

0
推荐指数
1
解决办法
145
查看次数

在java中初始化具有动态大小的二维字符串数组

我有未知数量的记录,我需要将所有记录放在字符串二维数组中.

我不知道记录的数量,因此,不知道字符串2d数组初始化所需的行数和列数.

目前我使用如下:

String[][] data = new String[100][100]; 
Run Code Online (Sandbox Code Playgroud)

这里我硬编码行数和列数,但需要在字符串2d数组中允许的动态大小.任何建议请!

Rgrds

java dynamic-arrays

0
推荐指数
1
解决办法
1万
查看次数

C++使用动态数组将小写更改为大写

我正在尝试使用动态数组将小写单词更改为大写单词.在遇到"堆腐败"之前,我碰到了一些我没有遇到的事情.有人可以向我解释我做错了什么,可能有助于解决这个问题?

#include <iostream>
#include <cctype>
#include <new>
#include <string>
using namespace std;

int main()
{
    int i;
    int w;
    char *p;
    string str;

    cout << "Change lowercase to UPPERCASE!" << endl;
    cout << "Enter Word: ";
    cin >> str;
    w = str.length();

    p = new (nothrow) char[w];

    if (p == nullptr)
        cout << "Error: memory could not be allocated" << endl;
    else
    {
        cout << "Re-Enter Word: ";
        cin >> p[w];
        for (i = 0; i < w; i++)
            cout …
Run Code Online (Sandbox Code Playgroud)

c++ pointers dynamic-arrays

0
推荐指数
1
解决办法
1349
查看次数

Fortran:在读取未知大小的文件时如何分配数组?

我对Fortran的典型使用始于读取未知大小的文件(通常为5-100MB).我目前的数组分配方法涉及读取文件两次.首先确定问题的大小(分配数组),然后第二次将数据读入这些数组.

是否有更好的尺寸确定/阵列分配方法?我刚刚阅读了另一篇文章中的自动数组分配(例如下面的例子),这看起来更容易.

array = [array,new_data]
Run Code Online (Sandbox Code Playgroud)

有哪些选择及其优缺点?

arrays fortran dynamic-arrays

0
推荐指数
1
解决办法
428
查看次数