|
T*****9 发帖数: 2484 | 2 假如我有一个二维数组int[][] a;
我想把第i维置空,能用a[i] = new int[]{}么? |
|
t**o 发帖数: 144 | 3 在一个函数里一个数组不能被定义两次,例如定义了一个
int a[3]
如果下面再定义一个
int a[5]
就会出错。但是为什么下面这个程序就不会出错:
int main()
{
int i, j;
for (i=2; i<5; ++i)
{
int a[i];
for (j=0; j
{
a[j] = j+i;
printf("a(j) = %d\n", a[j]);
}
}
return 0;
}
貌似在每个循环里a[i]都被重新定义了。是不是这里a[i]的scope仅限于每次循环,而
不是整个函数?分配给a[i]的内存每次循环后都会释放吗,还是等整个循环结束后才释
放?
谢谢高手指教。 |
|
H***a 发帖数: 735 | 4 现有2个vecter: x和y,分别存放数组A里某个元素的行和列坐标,比如:
x=[1:3] --> x = 1 2 3
y=[1:3] --> y = 1 2 3
A=[1:3;4:6;7:9] -->
A = 1 2 3
4 5 6
7 8 9
现在希望能用A(x,y)实现类似"diag(A) = 1 5 9"的功能,但显然Matlab并不会把x,y一
一对应填入坐标,而是自动充满,即A(1:3,1:3),所以输出整个A。 请问如何才能用x,y
来实现呢?谢谢。
|
|
x****t 发帖数: 389 | 5 来自主题: Programming版 - 数组弱问 #include
using namespace std;
int main(){
double a[10];
for(int i=0;i<10;i++) a[i]=i+1;
int t=111;
cout<
return 0;
}
运行出来等于a[t]=0,C里面就是数组溢出也不报错的吗? |
|
l*****d 发帖数: 359 | 6 来自主题: Programming版 - 数组弱问 只能说编译器比较笨。不过c里面数组不越界的确是应该程序员自己控制的。 |
|
f******y 发帖数: 2971 | 7 来自主题: Programming版 - 数组弱问 数组越界是不报的,不过运行的时候很可能有segmentation fault。 |
|
l*****d 发帖数: 359 | 8 来自主题: Programming版 - 关于数组 如果a是数组, a就是&a吧,一回事儿。 |
|
s*****k 发帖数: 604 | 9 来自主题: Programming版 - 数组问题 有两个变量
char a[] = "Hello";
char *b = "Hello";
稍微了解指针和数组差别的人可以都知道这个区别
sizeof(a) = 6;
sizeof(b) = 4;
如果有这样一个函数,
void siz(char a[100])
{
printf("%d\n", sizeof(a));
}
请问调用这个函数为什么输出是 4? |
|
b*******a 发帖数: 68 | 10 来自主题: Programming版 - 数组问题 函数参数里的数组如指针等价,即以下相同 (那个100没什么用用,直接忽略,一般别
这么写,没用,因为compiler/runtime不检查,而且confusing):
void foo(char *p)
void foo(char p[])
void foo(char p[100]) |
|
b***y 发帖数: 2799 | 11 ☆─────────────────────────────────────☆
wmbyhh (wmbyhh) 于 (Tue May 13 15:30:24 2008) 提到:
C#里面的动态数组是怎样定义的?
就是说需要一个heap,长度是未知,添加记录后不断增大、同时删除记录后不断减小。
不知如何实现?
难道要用指针吗?对指针不熟。
☆─────────────────────────────────────☆
kfk (忘情四百年,快意山水间) 于 (Tue May 13 18:16:05 2008) 提到:
use List, Queue or Stack
☆─────────────────────────────────────☆
greatpanda (囧興) 于 (Tue May 13 18:36:34 2008) 提到:
卡夫卡也玩csharp?
☆─────────────────────────────────────☆
wmbyhh (wmbyhh) 于 (Tue May 13 20:07:31 2008) 提到:
就算 |
|
b***y 发帖数: 2799 | 12 ☆─────────────────────────────────────☆
xubest (既飞之蜻蜓) 于 (Thu May 15 02:48:01 2008) 提到:
for some reason,没有用vector >a,而是 vector *a,然后用new定
一维数组,然后在push_back出另一维,程序如下:
#include
#include
using namespace std;
int main()
{
vector *a;
a = new vector [2];
a[0].push_back(7);
a[1].push_back(8);
for(int i=0;i<2;i++)
{
for(int j=0;j
{
cout<
} |
|
b***y 发帖数: 2799 | 13 ☆─────────────────────────────────────☆
matII (代号9527) 于 (Tue Sep 30 21:46:48 2008) 提到:
看似是个弱智问题。。。
我是这么做的:
double x[100]; //待传递的数组
double *y = x;
这个可以工作,但是使用y会比直接使用x慢好几倍。。。
下面是完整的速度测试:
#include
#include
using namespace std;
const int n = 100;
const int N_Trial = 1000000;
int main(void)
{
double x[n],y[n];
for(int i=0;i
{
x[i] = rand();
y[i] = x[i];
}
double *z=y;
double start,t;
start = clock();
for(int i=0;i |
|
b*********n 发帖数: 1258 | 14 程序是这样的
有一个动态长度的vector
然后对这个vector做DP
想问问那个DP结果的2维数组用什么数据结构比较好?
谢谢 |
|
t****t 发帖数: 6806 | 15 在func里肯定是没法check的, 因为你需要接收任意大小的数组, 所以你的类型一定是
int*, 即int [N]退化成int*了.
si
无法 |
|
z****e 发帖数: 2024 | 16 函数的argument如果是一维数组,不需要声明维数,如果是高维,那么最后一个维数是
需要声明的
void test(int b[20]) =void test(int b[ ]) |
|
l********d 发帖数: 55 | 17 假设N个数组分布在不同机器上。一共N台机器。如何有效的找出这N*N个数的中数。
多谢 |
|
X****r 发帖数: 3557 | 18 你是问怎么复制一个数组吗?
Arrays.copyOf
或System.arraycopy
多维的话恐怕要自己循环一下。
b |
|
X****r 发帖数: 3557 | 19 那不就是把数组复制后的结果传进去吗,这样原来那份就不会被修改了。 |
|
X****r 发帖数: 3557 | 20 你怎么拷贝的?b = a; ?这样不是拷贝,而是aliasing。如果你是多维数组的话光
调用一个Arrays.copyOf也不够,得自己循环调用它来复制才行。 |
|
q*******i 发帖数: 353 | 21 对,我发现就是循环复制才行,但是数组维数一高,循环复制岂不是效率太低。想问有
没有更高效的办法解决这个问题 |
|
q*******i 发帖数: 353 | 22 我就是一个m*n的二维数组,但是m和n都很大,这样即使用两个for循环来复制效率也不
低。对吧?除此之外实在想不到什么办法改变新值而原值不变了 |
|
g*****g 发帖数: 34805 | 23 通常一维数组地址连续,二维不是。
跟你说了半天调N次arraycopy就行,不能理解我也没办法了。 |
|
S******n 发帖数: 489 | 24 哦,明白了,如果是静态数组的话就放在内存里了? |
|
c**b 发帖数: 2999 | 25 变量名字尽量用具体的,比如userName. c里面难度大的是指针,数组,函数. |
|
y**********0 发帖数: 425 | 26 char str[20];
......
str++错误,但是++str 正确。
这个和整数的不同吗,整数就可以i++和++i,但是数组名就不行? |
|
|
y**********0 发帖数: 425 | 28 数组名字就相当于一个指针,
比如char str[20];
...
str[1]和*(str+1)是一样的,但是 str++是错误的,而++str是正确的呢。如果不知道
这个,很难发现错误的。我仔细看了答案才知道。 |
|
M**u 发帖数: 10158 | 29 你cout (unsigned long)&a[3] - (unsigned long)&a[0]
你这个就是简单的pointer substract,取决于数组的类型 |
|
S****z 发帖数: 666 | 30 那我看地址的时候看到的38,2C是不是物理地址?
你意思是我不应该看这些物理地址,应该看它的逻辑地址?
那怎么把GPS LOCATION转成门牌号啊?sigh,真是麻烦,所见还非所得了
计算机内存模型那块我大概知道它用一个叫什么虚拟内存的概念,
然后来来去去几个页面调度算法,再复杂的我就不太清楚了
不过貌似这跟我取数组元素地址减一下没啥关系吧
The
lived
in
. |
|
P********e 发帖数: 2610 | 31 看你最终有另外output数组还是没有?
有就 正序,否则反序。区别不大。然后,每2个数组合。
多属性没什么不同,就是自建struct, 多个比较函数。
不想写,就用stl的pair.反正都是唯一。
的。 |
|
p***o 发帖数: 1252 | 32 用heap,每个数组顺序读一遍,结果写一遍,从I/O上讲效率已经不错了。
再想提高的话花点时间读文献也是值得的。 |
|
k***t 发帖数: 57 | 33 我现在是对第二次赋值做个计数 然后正向你说的 保证只用那范围内
但请教一下数组清零有什么好办法么?谢谢 |
|
|
l***y 发帖数: 4671 | 35 为了避免 copy 大数组 (实际运算是 1000-by-1000,并且大量重复访问),想用个指针
来指向它。
int main () {
static int A[10][10][10];
static int B[10][10][10];
static int C[10][10][10];
A[1][2][3] = 123;
B[1][2][3] = 1230;
C[1][2][3] = 12300;
int (*p)[10][10][10]; // line a
char cFlag;
cin >> cFlag;
while (cFlag == 'A' || cFlag == 'B' ||cFlag == 'C') {
switch (cFlag) {
case 'A':
p = &A;
break;
case 'B':
p = &B;
break;
case 'C':
p = &C;
break;
}
printf(... 阅读全帖 |
|
l********a 发帖数: 1154 | 36 常数数组如果是card类的成员
wujiang.cpp引用一下card.h就可以使用其成员数据了 |
|
b***i 发帖数: 3043 | 37 在card.cpp里面附初值,在card.h定义这个常数数组。既然常数,可以static,基本就
是全局变量。wujiang.h里面include "card.h"
cpp |
|
b*******s 发帖数: 5216 | 38 应该是一个包含了p个单链表头指针的数组吧,你的insert是怎么做的? |
|
b*******s 发帖数: 5216 | 39 应该是一个包含了p个单链表头指针的数组吧,你的insert是怎么做的? |
|
b***i 发帖数: 3043 | 40 对,这样也许就是楼主的第三方程序需要的,是动态分配的指针的指针的内存。
而且,这样也不算ugly,这就是标准动态分配二维均可变数组的方法。
|
|
f*****y 发帖数: 1997 | 41 请大家看看我的new和delete用的对么? 传给函数的时候,是传指针还是数组名呢?
void main()
{
double **** g;
g = new double *** [m_ydimension];
for(i=0; i< m_ydimension; i++)
{
g[i] = new double ** [m_xdimension];
for (j=0; j< m_xdimension; j++)
{
g[i][j]= new double * [m_zdimension];
for (k=0; k
{
g[i][j][k] = new double [19];
for (l=0; l<19; l++)
{
g[i][j][k][l]=0.0;
... 阅读全帖 |
|
t*******s 发帖数: 7 | 42 超过3维的数组已经反人类了。我会用一个一维的来存贮,
用函数来代替取值。
问题是找值时候是稍微慢点。但是我估计不影响小data size .
我写的代码见下。
最大的好处是可以定义为任意dimensions.
caller 的 interface 不用改变,不用打多余的星星(*),哈哈 |
|
N******K 发帖数: 10202 | 43 我今天来黑一下java
限制大小为 int 255
不支持连续存储的多维数组
完全就把它和大型图像计算隔离开了 |
|
N******K 发帖数: 10202 | 44 哈哈 手误而已 int 32位
没有连续多维数组 造成的矩阵运算麻烦 以及调用lapack等线性代数库的速度问题 不
是你能想象的 |
|
g*****g 发帖数: 34805 | 45 你这个手误得太离谱了,显示出一点common sense都没有。没有连续多维数组,
没有所谓实现上的矩阵运算麻烦,你这个是纯闲扯。你要说性能不如C,fortran,地球
人都知道。 |
|
g*****g 发帖数: 34805 | 46 你能不能具体一点那篇paper哪页提到这个无联系多维数组妨碍了实现。你这个页面无
数篇
paper没法翻。 |
|
g*****g 发帖数: 34805 | 47 这个提的仍然是性能问题,不是实现问题,不能对多维数组做直接操作影响性能,不影
响实现。 |
|
N******K 发帖数: 10202 | 48 没有连续多维数组 造成的矩阵运算麻烦 以及调用lapack等线性代数库的速度问题 不
是你能想象的
这句话 你能推理出 java不能实现矩阵运算 说明你已经进化到那美克星人层次 |
|
g*****g 发帖数: 34805 | 49 既然性能不能用麻烦修饰,地球人理解就是你说java没有多维数组造成矩阵运算的实现
麻烦。
所以我问为啥实现麻烦,你小学语文不及格不是我的错。 |
|
g*****g 发帖数: 34805 | 50 自己乱喷,就别怪我打你脸,我问为啥实现麻烦,你不但没否认,还paper为证哪。现
在又否认没说了?
就你这德性也好意思出来丢人?
发信人: NatureOK (ok), 信区: Programming
标 题: Re: java在数组上的问题:作茧自缚
发信站: BBS 未名空间站 (Sat Mar 23 17:04:09 2013, 美东)
有paper为证 不是我胡扯
http://math.nist.gov/javanumerics/ |
|