从Stackoverflow上的一些答案中,我开始知道从-5到256相同的内存位置被引用,因此我们得到:
>>> a = 256
>>> a is 256
True
Run Code Online (Sandbox Code Playgroud)
现在来了扭曲(在标记重复之前参见此行):
>>> a = 257
>>> a is 257
False
Run Code Online (Sandbox Code Playgroud)
这是完全理解的,但现在如果我这样做:
>>> a = 257; a is 257
True
>>> a = 12345; a is 12345
True
Run Code Online (Sandbox Code Playgroud)
为什么?
当我做:
>>> d={True:'yes',1:'no',1.0:'maybe'}
>>> d
Run Code Online (Sandbox Code Playgroud)
我收到的输出:
>>> {True:'maybe'}
Run Code Online (Sandbox Code Playgroud)
这不仅是我的一些键被删除,而且它所持有的值也被改变了.
为什么True优先于另一个bool键?
很明显,2D阵列的行主要形式是存储的单个阵列,使得不同的行按顺序排列.
要遍历2d数组的任何元素,我总是可以这样做:
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<3*3;i++){
cout<<*(*a+i)<<" "; //row major form concept where i<m*n;
}
Run Code Online (Sandbox Code Playgroud)
得到:
1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
它完全适合我,但每当我使用向量执行此操作时,它会抛出一个错误:
vector<vector<int> > v={{1,2,3},{4,5,6},{7,8,9}};
int m=v.size();
int n=v[0].size();
for(int i=0;i<m*n;i++){
cout<<*(*v+i)<<" ";
}
Run Code Online (Sandbox Code Playgroud)
它给 :
no match for ‘operator*’ (operand type is ‘std::vector<std::vector<int> >)
Run Code Online (Sandbox Code Playgroud)
我希望向量确实遵循行主要形式概念作为数组.如果是,那么在向量的情况下,行大调的替代方法是什么?