由买买提看人间百态

topics

全部话题 - 话题: 数组
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
a****l
发帖数: 8211
1
简单的说,有一堆数据,可能有100个,也可能有10000个,甚至更多,无法估计上限.从一个
flag说“开始”就一个接一个的接受数据,保存在数组(内存中)中,直到另一个flag
说“结束”为止。这样的数组怎么比较好的安排存储空间?关键是还有速度/效率的要
求,所以不能resize 一块memory,也不能另外找一块大的memory把原来的数据复制过
去。由于语言的问题,也不能用指针。
有谁有比较好的办法?
f*******y
发帖数: 139
2
来自主题: Programming版 - 数组定义的时候,分配空间了么?
我记得以前用C的时候,数组要定义成全局或静态,或用malloc,否则内存有可能出错。
但现在用VS2003, C++,定义了一个数组,感觉是在run-time 分配了空间的。
另外不是run-tiime的难道是分配在heap上么?
W*W
发帖数: 293
3
来自主题: Programming版 - 请教C里面动态数组的赋值
我想建立一个数组,但数组的大小由程序中while循环的停止条件决定,请问C里面应该
怎么做?
f**********w
发帖数: 93
4
想在fortran中定义一个动态大小的数组,数组的大小从文件中读入,所以开始不知道。
我知道在C++中可以
int *p2i = new int[size];
//....
在fortran中怎么做?谢谢
n****n
发帖数: 101
5
每个数组都有上千数据,我是用heap进行归并,但是,考虑到各个数组都已经是升序排
好了的,那么能否利用这个特点,进一步减小归并的时间、提高效率呢?
g***e
发帖数: 577
6
来自主题: Programming版 - 如何动态分配一个2维数组?
程序需要一个2维数组,但是大小不定,如何实现?
或者不限于一定要数组来实现,但是希望操作起来比较简单。
w***g
发帖数: 5958
7
来自主题: Programming版 - 请教c++数组初始化
我需要产生一系列同分布的哈希函数,想存在一个数组里。哈希函数的构造函数接受一
机函数生成器的引用用于产生随机数。这样顺序产生的哈希函数可以各不相同但属
于同

问题是new只能调用无参构造函数; vector允许调用无参或拷贝构造函数。拷贝构造函
数不
行因为产生的对象是完全一样的,而不是独立同分布的。
我目前的做法是定义一个无参构造函数,不干任何事情,再定义一个init方法做真正的
化。vector分配后用一个循环初始化每个元素。但我觉得这种做法不好,因为一开
始生
对象其实并没有真正初始化,如果忘了调用init就会出错。另外同时存在构造
函数和ini
非常混乱。
另一种方法是分配一个指针数组,然后挨个new。用完了挨个delete。感觉比较原始,
得判
断0指针什么的,也很不爽。
重载拷贝构造函数最简单,但是这样就没法保持“拷贝”的语义,也会引起混乱。
不知道有没有什么好的idiom或者现成的library可以用。
w****h
发帖数: 212
8
来自主题: Programming版 - 请问如何初始化out定义的数组
这个数组是一个堆heap,长度是随时增加、减小的,不是固定的。
难道要定义一个宏变量指示堆的最大长度?那样当数组长度减小时,怎办?
w****h
发帖数: 212
9
比如有N个数组,名字是flow1, flow2,...flown
那么如何用循环依次读取这N个数组里数据,比如flow{i}[4]?
在matlab里容易用eval实现,不知道C#里如何实现。
p***o
发帖数: 1252
10
你还是先研究下怎么在C#里定义这么N个数组把。
为啥不用2维数组呢?
p***o
发帖数: 1252
11
一维数组和二维数组有啥差别?你不跳出matlab的框框能学好c#么。
w****h
发帖数: 212
12
这个传入的长度会自动根数组关联吗?
把a赋给dataHeap,只是首地址赋值吧,整个数组长度也会自动赋值?

Java.
a**a
发帖数: 416
13
来自主题: Programming版 - 数组弱问
应该是基本没有。除非你自己检查。考虑a[sth], 这里的sth就是一个表达式,其值
可能要靠执行到那里才知道,而a可以是另外一个表达式,其值也是运行的时候才知道。
在C语言模型中,变量不过是地址蒙上漂亮的面纱,数组更是。现在飞过来一个地址,
你怎么知道它是不是数组,是几维的,每维有多大,等等这些问题都不是在C语言的框架
下能解决的。所以只能依赖程序员来保证程序的正确。
s*****k
发帖数: 604
14
来自主题: Programming版 - 数组问题
多谢。我还真不知道。以前用一个基于C的离散事件模拟的语言(先翻译成C再编译),
那里面
数组传递的时候就是拷贝整个数组的, 所以我以为C里面也是这样的。
o**o
发帖数: 3964
15
来自主题: Programming版 - 在C/Fortran之间传递2维数组
不要搞2维数组。开线性的整块内存,自己管理维数。维数作为参数传给子程序。
唯一要注意的是Fortran是列优先,所以相对于C的行和列的定义是反的。
具体可以参考CLAPACK的接口是怎么定义的。撇开数组指针和动态分配,能更好
地把注意力集中到Fortran擅长的任务上。
q*******i
发帖数: 353
16
来自主题: Programming版 - Java数组怎么样能参数传递 (转载)
我遇到的问题是把数组作为参数传递给函数,在函数中数组值被修改同时原来的值也被
修改,有什么办法能让函数中值被修改但是原值不被修改。谢谢
f******y
发帖数: 2971
17
vector是在heap上的,创建时稍慢一些。另外,vector也比实际数组大一些。但这些差
别应该都不重要,vector的好处远远多于它的overhead。
X****r
发帖数: 3557
18
来自主题: Programming版 - 问个关于数组的问题
堆栈上放不下这么大的数组。在数组前加static关键字。

什么
h*****n
发帖数: 209
19
比如说一个C程序内有很多int型的变量,还有一些int 或 char的数组,
有时候我发现这些变量的内存地址有可能和这些数组的地址混在一起了,这样就导致了
一些莫名其妙的bug。
不知道这是由于compiler的问题,还是程序本身没设计好。
我想版上的高手应该也经历过类似的问题。那么如何预防这种bug呢?
X****r
发帖数: 3557
20
一般来说,程序里定义的变量,包括数组,各有不同的地址,是不会混淆的。
你说的“数组”大概是指指针吧。一旦使用指针,自然有可能指向错误的地方。
c**b
发帖数: 2999
21
来自主题: Programming版 - 数组指针的问题
数组名字是数组的首地址.
c*******h
发帖数: 1096
22
来自主题: Programming版 - C里面的数组拷贝
数组A,元素是 1a 1b 2a 2b 3a 3b ...
想要拷贝到数组B,但是元素排列换成 1a 2a 3a ... 1b 2b 3b ...
有没有类似memcpy的函数可以快速的拷贝的,而不用对B逐个赋值?
a******8
发帖数: 660
23
goodbug 不是已经说了用 merge sort 的 merging step 了么?
复杂度对已经有序的数组是各数组长度之和
g*****g
发帖数: 34805
24
应该说是O(M LogN),M是所有数组长度之和,N是数组的个数。
如果数据在某个已知范围,可以用radix sort进行优化。
c****p
发帖数: 6474
25
把每个数组的第一个元素放进一个heap,每次heap弹出一个元素就把该元素所在的数组
的第一个元素压入heap

的。
y**b
发帖数: 10166
26
来自主题: Programming版 - 多维数组用vector是不是更方便?
这几天用了几次动态多维数组,感觉用vector比new要方便一些,
也不容易出错,比如一个四维数组:
// 4-dimensional array of cellVec
typedef pair > cellT;
vector< vector< vector < cellT > > > cellVec;
cellVec.resize(nx);
for (int i = 0; i < cellVec.size(); ++i) {
cellVec[i].resize(ny);
for (int j = 0; j < cellVec[i].size(); ++j)
cellVec[i][j].resize(nz);
}
// mark each cell as not searched
for (int i = 0; i < nx; ++i)
for (int j = 0; j < ny; ++j)
for (int k = 0; k < nz; ++k) {
... 阅读全帖
d****i
发帖数: 4809
27
对,唯一不同的是如果作为函数的参数,那么在函数中dereference的时候,用二维数
组可以写成(更直观一些):
void addMatrix(int **a, int **b, int row, int col)
{
for(i=0;i for(j=0;j a[i][j] += b[i][j];
}
用一维数组可以写成:
void addMatrix(int *a, int *b, int row, int col)
{
for(i=0;i for(j=0;j a[i*row+j] += b[i*row+j];
}
c********l
发帖数: 8138
28
来自主题: Programming版 - 求问一道数组shuffle的问题 (转载)
【 以下文字转载自 JobHunting 讨论区 】
发信人: coupondeal (Coupon Deal), 信区: JobHunting
标 题: 求问一道数组shuffle的问题
发信站: BBS 未名空间站 (Sun Mar 17 21:46:36 2013, 美东)
数组shuffle,经典的Fisher and Yates的算法是
public static void shuffle(List list, Random rnd) {
int size = list.size();
for (int i=size; i>1; i--)
swap(list, i-1, rnd.nextInt(i));
}
}
如果将
swap(list, i-1, rnd.nextInt(i));
改成
swap(list, i-1, rnd.nextInt(N));
会出错。
具体出错的原因是什么?怎么描述这种现象?
g*****g
发帖数: 34805
29
来自主题: Programming版 - java在数组上的问题:作茧自缚
你确定你说的是java,java数组的上限是Integer.MAX_VAlUE减一个跟实现相关的小常
数,也就是接近于2^31。没有连续多维数组是事实,但既然你不能做指针操作,看不出
有啥区别。
科学计算,计算复杂度高,代码量不大,不用java很自然。
g*****g
发帖数: 34805
30
来自主题: Programming版 - java在数组上的问题:作茧自缚
得,你说话够不靠谱的。说的3句话,两个帖子下来就证明错了2句。就剩一句java性能
不如c/fortran,地球人都知道的废话。实在没啥好争的,java本来就不是针对科学计
算设计的。你干脆说java没有指针,没法做内存操作,是作茧自缚,直接把自己踢出了
系统编程的领域。
发信人: NatureOK (ok), 信区: Programming
标 题: Re: java在数组上的问题:作茧自缚
发信站: BBS 未名空间站 (Sat Mar 23 16:58:31 2013, 美东)
哈哈 手误而已 int 32位
没有连续多维数组 造成的矩阵运算麻烦 以及调用lapack等线性代数库的速度问题 不
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
是你能想象的
p*****2
发帖数: 21240
31
来自主题: Programming版 - java在数组上的问题:作茧自缚
再说了,多维数组跟一维数组有啥大区别吗?用一维模拟不久可以了吗?
g*****g
发帖数: 34805
32
来自主题: Programming版 - java在数组上的问题:作茧自缚
那是你自己的表达能力有问题,既然后面提到的是速度问题,还用了个以及,前面想必
说的是实现的麻烦。没听说过用麻烦来形容性能问题的。
发信人: NatureOK (ok), 信区: Programming
标 题: Re: java在数组上的问题:作茧自缚
发信站: BBS 未名空间站 (Sat Mar 23 16:58:31 2013, 美东)
哈哈 手误而已 int 32位
没有连续多维数组 造成的矩阵运算麻烦 以及调用lapack等线性代数库的速度问题 不
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
是你能想象的
t***a
发帖数: 416
33
来自主题: Programming版 - java在数组上的问题:作茧自缚
不行啊,arraylist后面也是array实现的,楼主说java array大小有限制。。。。
楼主还要多维数组,还要能连续的。。。而且超大的。。。
我猜楼主说的那个算法就是基于所谓多维连续超大数组实现的。。。。要么不用java,
要么重搞算法。。。。这有啥好纠结的嘛
d***a
发帖数: 13752
34
来自主题: Programming版 - 数组分配问题,求教
这样是更好的做法。
用指针数组程序更复杂,运行效率也相对较低。
第一句有点小错,数组少定义了一维。

short)
m*******l
发帖数: 12782
35
裸数组?
没有用vector?

watch窗口太弱了
如果是matlab 直接用一张表格显示出来数组的各个数据
msvs c++ 怎么搞?
N******K
发帖数: 10202
36
我搞的是3d的图像 像素可以是数或向量
一维数组 可以用 std::vector 网上看了看 性能和new出来的裸
数组一样 c++11可以拿到裸指针 更加方便
二维容器 - matrix 这个必须自己搞 主要目的不是写一个类库 而是配合3d图像运算
以及调用各种线性代数类库的接口/wrapper
三维的 没有什么合适的 算法都要重新写 完全得自己搞
四维的/图像序列 可以把像素看成是四维的 (x,y,z,t) 定义运算

scratch
O***b
发帖数: 104
37
没比较过,但是觉得应该是数组快,结构和类都有overhead,数组是直接在一块糙内存
上开搞
d****i
发帖数: 4809
38
楼上说的对,原生数组最快,占用内存最小。另外,C里面的数组不是你这样定义的,
你把他和Java, C#的搞混了。
h*****4
发帖数: 4219
39
来自主题: Programming版 - 现在082KAFKA支持produce数组吗
目前看到两个send都是发一个record,如果想发一个数组的,是应该break down一个一
个发还是直接把数组当做OBJ发过去,然后让consumer来处理? 哪个好??
g******s
发帖数: 733
40
比如
a=zeros(20,20,20);
b=a(1,:,:);
size(b)
后得到的是(1 20 20),而不是我想要的(20 20)这样的两维数组。
先谢了!
s*******n
发帖数: 101
41
比如有很多4维甚至5维的数组,要进行A[1][2][3][4][5]=6这样的操作,会不会影
响很速度?另外,这种多位数组在MEX文件中怎么处理,寻址很麻烦呀.多谢。
d*******2
发帖数: 340
42
通过函数传递数组会让计算速度下降吗?我写的程序通过函数传递4个数组,我们组另
外一个人写的好像函数后面的括号里啥也没有。是不是我的写法太笨了?先谢了!
c*******h
发帖数: 1096
43
【 以下文字转载自 Programming 讨论区 】
发信人: cockroach (冬冬), 信区: Programming
标 题: C/C++里面有没有库提供找数组median的函数
发信站: BBS 未名空间站 (Tue Jan 3 14:05:26 2012, 美东)
数组是分布式存储的
j*******e
发帖数: 674
44
来自主题: Statistics版 - 如何检测一个数组的状态变化
我需要检测一个数组的状态变化。
当变化比较小的时候,不采取任何行动。当变化比较大的时候,采取行动.
比如下面的序列:
time 1: 【10, -20, 30, 40】
time 2: 【10, -21, 29, 40】
time 3: 【20, -22, 38, 41】     --big change here
time 4: 【20, -21, 38, 41】
time 5: 【20, -21, 38, 40, 10】  --big change here
time 3和5发生的显著变化, 需要响应。
其中 time 5的时候,数组增加了一维。
以前上学时学的知识都还给老师了。直觉应该用standard deviation,但不知怎么处理
维数变化的问题。还有就是怎么设threshold?
请教统计版的牛人们,給个pointer.
谢了先。
c**********e
发帖数: 2007
45

Ask a weak question: how to do: 我们从头到尾依次异或数组中的每一个数字?
Y*****y
发帖数: 361
46
恩,这个分组idea我明白,不太明白的是code里面最后的实现。那里是用j作为index从
头扫到尾,然后对每个inputArray[j]进行判断,如果indexOf1这一位是1,update
temp1到inputArray[j],否则update temp2到inputArray[j]。最后的输出结果temp1和
temp2。
作为一个例子,假设N1,N2是出现过一次的数,且N1在那位上是1,N2是0。假设N3,N4出
现过两次,N3该位是1,N4是0。如果这个inputArray是这样的,{N3,N4,N1,N2,N3,N4},
用上面code里面的方法,最后temp1指向第二个N3,temp2指向第二个N4,得出的结果好
像不太对。 就算不用code里面的方法,我的疑问是,对这个例子,如何可以不重新排
序或空间复杂度是O(1),而直接把原来的数组分成两个组,且具有你说的那个性质(N1
和N2被划分到不同的组,每个组里面其他元素都出现两次)。
或者我的理解有问题,多谢指教。

在一起
被简化
l*y
发帖数: 21010
47
来自主题: JobHunting版 - 关于数组size的问题
我感觉没什么办法,只能自己把数组封装起来了。。
j**l
发帖数: 2911
48
来自主题: JobHunting版 - 求两个等长有序数组的median的细节
假设两个有序数组A和B,它们的长度都为n
1. n = 1
median是(A[0] + B[0]) / 2.0
2. n = 2
median是(max(A[0], B[0]) + min(A[1], B[1])) / 2.0
3. n > 2
假如median(A) == median(B), 则median(A+B)就是median(A)或median(B)
假如median(A) != median(B), 不妨设median(A) < median(B),则
1). n是奇数
假设median(A)和median(B)的单median的序号都是m,则问题化归为求
A[m..n-1]和B[0..m]的median
2). n是偶数
假设median(A)和median(B)的双median的序号都是m1, m2(m2 = m1 + 1), 则问题化归
为求
a. A[m1..n-1]和B[0..m2]的median
注意不可以化归为求
b. A[m2..n-1]和B[0..m1]的median
举例说明
A = {2, 4, 6, 10}
B = {1, 3, 9, 12}
n
j**l
发帖数: 2911
49
个人觉得,在面试中遇到,可先提出用Hash,随即指出这种方法需要额外空间,虽然也可以
处理非排序数组(优点),但对于本题,并没有很好的利用到排序这个已知条件。
然后给出平凡解法,白板coding。
然后抢在面试官问你还有什么改进之前,主动提出对平凡解法的各种加速策略。
最后想一下好的test cases, 尽可能考虑各种情形。
还可以展开来和面试官谈谈Hash table, binary search, 改进的binary search,
以及其它相应的话题,应该能达到让他满意的效果了吧。
j**l
发帖数: 2911
50
Key就是每个数组元素,value你可以累加该元素出现的总次数,也完全可以不去管它。
因为这里只关心新来的每一个元素是否已经在Hash表中存在,存在就表明重复,并不关心它重复出现了多少次。
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)