c++二维vector数组赋值的问题

建了一个二维数组(19*19):
图片说明

初始化:
图片说明

然后根据条件改值:
图片说明
赋值语句a[i] [j].safe=1;赋值成功,但是后面四行
a[i+1] f[j+1]a.safe=1;
a[i+1][j-1].safe=1;
a[i-1][j+1].safe=1;
a[i-1][j-1].safe=1;
却无法赋值(没有越界),这是为什么呢,有什么解决办法吗?
我是通过vs2010调试观察里面的值来看出后四行没有成功赋值的

8个回答

没有问题,下标没有越界。 码字不易,为下载资源,求给分。
直接把表格打出来就知道了。

初始状态
图片说明

i=1,j=2 对应5个位置是有赋值的
图片说明

i=17,j=17
图片说明

这个情况应该是因为越界造成的;
检查你的数组在定义时的长度
赋值的时候有没有越界。

你a虽然初始化了,但是a里面的元素没有初始化
需要
for (int i = 0; i < 19; i++)
for (int j = 0; j < 19; j++)
{
loc l;
a[i][j] = l;
}
也可以用push_back

weixin_37847623
小QAQ白 a[][]中所有的元素都初始化之后还是不行呀
一年多之前 回复

a在哪里定义的,有没有19x19,哪里有vector,safe是什么类型

越界了,for循环,j = 17 的时候满足 j <18 ;j自增1为 18,18+1 = 19,导致数组越界了

weixin_37847623
小QAQ白 回复xiaofang3a: 最大返回值不是17吗?
一年多之前 回复
xiaofang3a
xiaofang3a 回复weixin_37847623: 是的,但是你认真看for循环,当j = 17的时候,j<18,所以 j++ = 18 ,然后a[][j +1] 就是a[][19]了
一年多之前 回复
weixin_37847623
小QAQ白 a定义是19*19的,界限是a[18][18]和a[0][0]。
一年多之前 回复
xiaofang3a
xiaofang3a 如果此时i =1,j = 18,a[1][19]就已经越界了
一年多之前 回复

你怎么知道没有改动呢?我看是改了的呀,你看position为0的元素的左上,左下,右上,右下四个元素都应该safe是1,难道不是吗?

weixin_42325834
书香门第 回复weixin_37847623: 我觉得代码没有问题,而且我试了试也是改动了的。你会不会看错元素了?比如对于[1,1], 你应该看[0,0], [0,2], [2,0], [2,2]
一年多之前 回复
weixin_37847623
小QAQ白 一开始从计算结果来看是没有改,后来通过vs2010的调试,监视这个值来发现它们没有改的。
一年多之前 回复

应该先临界点,0和18的情况,中间的位置和是这样的赋值

vector初始化
一维:vector array(4,0) //有四个0
二维:vector >array(4,vector(4,0)) //有16个0,其中二维两个右尖括号中的空格在c++11以前需要打上

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++二维vector数组赋值的问题
rnrnrn建了一个二维数组(19*19):rn![图片说明](https://img-ask.csdn.net/upload/201806/06/1528254415_305614.png)rnrn初始化:rn![图片说明](https://img-ask.csdn.net/upload/201806/06/1528254479_16033.png)rnrnrn然后根据条件改值:rn![图片说明](https://img-ask.csdn.net/upload/201806/06/1528253301_116574.png)rn赋值语句a[i] [j].safe=1;赋值成功,但是后面四行rna[i+1] f[j+1]a.safe=1;rn a[i+1][j-1].safe=1;rn a[i-1][j+1].safe=1;rn a[i-1][j-1].safe=1;rn 却无法赋值(没有越界),这是为什么呢,有什么解决办法吗?rn 我是通过vs2010调试观察里面的值来看出后四行没有成功赋值的
二维vector数组clear的问题
我用vector> vec;创建了一个二维数组rn通过resize给他开辟了空间并存入数据rn现在我要怎么清空这个二维数组中的数据呢
C++中二维vector赋值
vector > nums(8,vector(13)); //二维数组的行数为8,列数为13。后一定要加一个空格,否则会被判别为操作符>>出错 int b[8][13] = {{0,0,1,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,1,1,1,0,0,0}, {0,1,1,0,1,0,0,0,0,0,0
二维vector 的赋值insert出错
vector > feat;rn vectortmpfeat;rn rn double *scales = new double[max_scale + interval];rn rn rn for(int i=0;i
二维vector的建立、赋值与输出
二维vector;STL
为二维vector进行赋值
为二维vector进行赋值
vector< vector >的赋值问题
int main(int argc, char* argv[])rnrn int order[9] = 4,8,3,7,1,0,2,5,6;rn vector< vector > matrix;rn int row;rn int col;rn int i;rn int L = 3;rn int PN = 4;rn int ordn;rnrn matrix = vector< vector > (L);rn for( i = 0; i < L; i++)rn matrix.push_back( vector
关于二维vector数组,迭代器clear的问题
非常简单的代码:rn[code=c]rnint main()rnrn std::vector>::iterator matchIterator;rn matchIterator->clear();rn return 0;rnrn[/code]rnrn运行至->clear()操作时就出现这样的问题rn[img=https://img-bbs.csdn.net/upload/201701/11/1484094896_211929.png][/img]rn请大家帮看下为什么
C数组赋值问题
第一次做C的东西,原来没接触过,小白一个!求帮助!rnrn//定义开始rnchar cp4[3][133]="","","";rnchar * text1;rnchar * text2;rnchar * text3;rn//定义结束rnrntext1=text_info->text[0].full_string;rntext2="<&1>";rntext3=text_info->text[1].full_string;rncp4[3][133]=(char)text1,(char)text2,(char)text3; //这样赋值不对!数组里一直没有值rnrnrnrn哪位大侠知道怎么将Text1,Text2,Text3赋值给cp4[3][133]数组????rn求指教啊。
二维数组查找(普通数组&vector数组)
题目描述: 分析方法: 选取右上角的数字9。开始遍历,目标数字比所遍历的小,就往左走;目标数字比所遍历的大,就往下走; 如果目标数据跟所遍历到的数据相等就说明找到了。 代码: 【写代码的时候突然发现自己不会二维数组传参了.......kepa 就写个小小程序测试了一下】 测试二维数组传参的!!! #include using namespace std; void fun
如何数组赋值给vector?
如何数组赋值给vector?
vector二维数组查找的问题
定义vector< vector > v;rn每次获得unsigned char m[10]数组,在容器中查找,若找到不做处理,若没找到添加到容器中,除了一个元素一个元素的比对,怎么实现?或者更换定义方式也行,怎么实现起来更加方便快速,请求大牛指导!!rn还有就是怎么不能vector这样定义,用find直接查找呢?每次push_back都会添加到容器第一个元素,就是直接覆盖了,容器最后也只保留了最后的一个元素。rnrn
无初始化的vector数组赋值
使用容器vector时,因无从得知大小vector.resize()不能使用如下初始化 错误演示: vector kseedx(0); vector kseedy(0); kseedx[co]=kseedsx[i]; kseedy[co]=kseedsy[i]; co++; 正确方法: kseedx.push_back(kseedsx[i]); kseedy.push
求教:二维实型数组赋值问题(2)
#include "stdio.h"rnmain()rn int i,j;rn float a[4][5];rn for(i=0;i<4;i++)rn for(j=0;j<5;j++) rn printf("\n%d,%d",i,j);rn fflush(stdin);rn scanf(" %3.2f",&a[i][j]);rn rn rn printf(" %3.2f*==a[2][2]\n",a[2][2]);rn rnrn运行 我输入了一堆数据rn可结果输出0.00=a[2][2]rn可见数据 并没有 被赋值给二维数组rnrnrn这是为什么呢rnrn请指教rn-------------------------------------------------------------------------------rnrn我用的是TURBOR C 2.0
二维vector 效率问题
rnrnclass RBlk;rnrnRBlk rblk;rnrnvector > aVec;rnrnfor ( int i=0; i!=2000; ++i ) //假设aVec是由2000个不定长的vector 构成的rnrn vector bVec;rn int size = rand()%1000 + 1; //1000是个估计的峰值rn for ( int j=0; j!=size; ++j )rn bVec.push_back( rblk );rnrn aVec.push_back( bVec );rnrnrnrn问题是:如何通过reserve()缩小此段函数的运行时间?rnrn1.若一开始就声明为vector > aVec( 1000, vector (1000) ); 则显然内存使用浪费,并且初始化这么大一个二维数组也很费时的。rn2.在vector > aVec;后aVec.reserve(1000);也是没用的,因为它并不知道第二维的大小。
遍历二维vector的问题
一个二维的vector> Analog;rn我写了下面的程序。想遍历里面的数据,并输出。但是不对。rn里面的vector 要用下标取值。rnrn求高手帮看看应该怎么写程序。rnrn[code=C/C++]rnCString any1;rnvector> Analog; rnvector>::iterator iter;rnrnfor( iter = Analog.begin(); iter != Analog.end(); iter++ )rn rn for(int i=8; i<16; i++)rn rn any1+=Analog[iter][i];rn rn AfxMessageBox("data is"+any1);rn file.WriteString(any1);rnrn[/code]
二维 vector
typedef vector > StringVector ;rn这句代码具体是什么意思?哪位高手能详细讲一下吗?rn是不是说建立了一个二维的vector容器类,这个容器里放的是string类型的数据,那么allocator又有什么用呢?从百科查allocator是类模板,还是不理解。
二维的VECTOR?
我在编制一个函数的时候想返回一个二维的VECTOR,请问如何实现呢?
关于数组赋值给vector的问题
在学c++Primer的时候,做课后练习时遇到一个问题rnint main()rnrn int i[10]=1,2,3,4,5,6,7,8,9,10;rn vector ivec(i+1,i+5);rn cout << ivec << endl;rn return 0;rnrnrn这个程序我觉得完全没有问题,为什么无法编译通过rn提示是:1>c:\documents and settings\luo\my documents\visual studio 2005\projects\exercise\exercise\exercise.cpp(11) : error C2679: 二进制“<<”: 没有找到接受“std::vector<_Ty>”类型的右操作数的运算符(或没有可接受的转换)rn
vector赋值问题,vector存放vector
定义一个info类,n为一个输入的值nvector> v:nv.assign(n,vector(n,ifo)):n怎么呢会出错呢
关于 c ++ 的 vector(scanf输入)(定义vector范围)(二维vector)
1.输入: vector&lt;int&gt; a,b; for(int i = 0; i &lt; n; i++) 使用用scanf( "%d", &amp;a[i])向容器输入值时; 或者 a[i] = b[i]时; 需要用resize()指定容器容量大小或者在定义向量容器时规定范围; 2.vector范围: 定义全局变量...
C语言数组赋值问题
C语言数组赋值问题,第四行输出lvalue required as left operand of assignment,如果a[n] == *(a+n),那这样为数组元素赋值为什么不可以?求解释。rnint a[3] = 1, 2, 3;rnint t = *a+1;rnprintf("%d\n", t);rn*a+1 = 3;rnprintf("%d", *a+1);
C语言数组赋值问题,,,
int a[6]=100,50,10,5,2,1;n 数组也能这样赋值的吗,这样做题居然AC了
数组赋值问题(C语言)
有个二维数组a[ i ][ j ],假设数组里面存在元素值等于9的元素,怎么样找出所有9的位置,并且把它的上下左右元素的值赋值为0,且其余位置的元素值不变,用C编如何编。
二维数组遍历赋值问题
调试运行错误:1.Access violation reading location 0x00000000 然后再调试就是闪退。直接运行偶尔能显示,虽然是错误的结果。注释掉一大截还是这样,折腾了半天了。rn[code=c]#include rnusing namespace std;rnint main()rn rn int ary2[6][6]=rn 0,0,0,0,0,0,rn 0,0,0,0,0,0,rn 0,0,0,0,0,0,rn 0,0,0,0,0,0,rn 0,0,0,0,0,0,rn 0,0,0,0,0,0;rn int ary[6][6]=2,2,2,0,0,0,rn 0,0,0,0,0,0,rn 0,0,0,0,0,0,rn 0,0,0,0,0,0,rn 0,0,1,0,0,0,rn 0,0,0,0,0,0;rn rnrn cout<<"开始遍历"<
如何创建二维动态vector数组
ATOM 5353 CA GLU L 3 24.030 12.395 0.041 0.00 0.00 L rn rnATOM 5362 CA VAL L 4 20.297 12.551 0.573 0.00 0.00 L rn rnATOM 5378 CA HSP L 5 17.286 10.321 0.675 0.00 0.00 L rn rnATOM 5396 CA HSP L 6 14.065 12.283 1.154 0.00 0.00 L rn rnATOM 5414 CA GLN L 7 10.790 10.894 0.334 0.00 0.00 L rn rnATOM 5431 CA LYS L 8 7.150 12.215 1.005 0.00 0.00 L rn rnATOM 5453 CA LEU L 9 3.447 11.059 0.712 0.00 0.00 L rn rnATOM 5472 CA VAL L 10 0.473 13.212 1.540 0.00 0.00 L rn rnATOM 5488 CA PHE L 11 -3.257 12.196 1.063 0.00 0.00 L rn rnATOM 5508 CA PHE L 12 -6.384 14.305 1.522 0.00 0.00 L rn rnATOM 5528 CA ALA L 13 -10.056 13.611 1.197 0.00 0.00 L rn rnATOM 5538 CA GLN L 14 -13.088 15.841 1.169 0.00 0.00 L rn rnATOM 5562 CA ASP L 15 -16.242 13.971 2.152 0.00 0.00 L rn rnATOM 5568 CA VAL L 16 -19.197 16.196 1.197 0.00 0.00 L rn rnATOM 5584 CA GLY L 17 -21.997 13.914 -0.035 0.00 0.00 L rn rnATOM 5591 CA SER L 18 -23.264 10.367 -0.718 0.00 0.00 L rn rnATOM 5602 CA ASN L 19 -20.597 7.655 -0.855 0.00 0.00 L rn rnATOM 5616 CA LYS L 20 -16.904 6.614 -1.542 0.00 0.00 L rn rnATOM 5638 CA GLY L 21 -16.317 2.866 -2.734 0.00 0.00 L rn rnATOM 5645 CA ALA L 22 -12.552 2.655 -3.205 0.00 0.00 L rn rnATOM 5655 CA ILE L 23 -9.414 0.881 -2.467 0.00 0.00 L rn rnATOM 5674 CA ILE L 24 -5.983 2.420 -3.005 0.00 0.00 L rn rnATOM 5693 CA GLY L 25 -2.344 1.413 -2.701 0.00 0.00 L rn rnATOM 5700 CA LEU L 26 0.562 3.973 -2.742 0.00 0.00 L rn rnATOM 5719 CA MET L 27 4.391 3.832 -2.457 0.00 0.00 L rn rnATOM 5736 CA VAL L 28 7.553 5.834 -2.561 0.00 0.00 L rn rnATOM 5752 CA GLY L 29 11.104 4.554 -1.965 0.00 0.00 L rn rnATOM 5759 CA GLY L 30 14.757 5.681 -2.497 0.00 0.00 L rn rnATOM 5766 CA VAL L 31 17.839 3.545 -2.095 0.00 0.00 L rn rnATOM 5785 CA VAL L 32 21.383 3.746 -3.153 0.00 0.00 Lrnrnrn请问如何创建一个动态的二维vector数组,存储以上数据!rn谢谢!
二维vector拷贝到CUDA数组怎么操作?
checkCudaErrors( cudaMemcpy2DToArray(d_imageArray, 0, 0, _data, pitch,imageWidth*sizeof(float),imageHeight, cudaMemcpyHostToDevice) );其中_data是vector> *_data,当imageWidth和imageHeight比较小的时候运行成功,比较大的时候会崩溃,难道是CUDA数组有大小限制?
vector 类型变量的赋值问题?
我定义了两个vector类型的变量vec,vec1,由于对vec中的字符串调用strtok函数会将字符串中的分隔符替代为NULL,也就是要修改vec中的字符串,所以我想用vec1变量保存修改前的vec,但如果我直接在修改前使用vec1 = vec的话,修改vec中字符串的同时也会修改vec1中的字符串,请教各位如何对vec1赋值使得vec1为vec修改前的值,而不随着vec的改变而改变? 谢谢!rnrn程序如下:rn#include "stdafx.h"rn#include rn#include rnusing namespace std;rnrnint main(int argc, char* argv[])rnrn vector vec,vec1;rn vec.push_back("This is an example");rn vec.push_back("def dfsdfsf fdsfsdfwerew dfs");rn vec.push_back("ghijk dfsf");rn rn vec1 = vec;rnrn char* token;rn const char delimit[] = " \t\n";rn rn token = strtok((char*)vec[0].c_str(),delimit);rn while (token != NULL)rn rn token = strtok(NULL,delimit);rn rnrn for (vector::iterator it = vec1.begin(); it < vec1.end(); it++)rn rn cout << (*it).c_str() << endl;rn rn return 0;rnrnrn此时,程序输出结果为:rnThisrndef dfsdfsf fdsfsdfwerew dfsrnghijk dfsfrnpress any key to continuern也就表明vec1随着vec的改变而改变了,我想要的是vec修改前的值,该如何对vec1赋值呢?
关于vector赋值的问题
[code=c]rnvoid UploadCheckInTobacco::set_check_in_tobacco(std::vector & check_in_tobacco_vector) rnrn check_in_tobacco_vector_.clear();rn std::vector::iterator iterator;rn for (iterator = check_in_tobacco_vector.begin(); iterator != check_in_tobacco_vector.end(); ++iterator)rn check_in_tobacco_vector_.push_back(*iterator);rnrn[/code]rnrn这个函数,将形参check_in_tobacco_vector容器中的所有元素,赋给class UploadCheckInTobacco的成员变量check_in_tobacco_vector_。赋值之前先清空check_in_tobacco_vector_。现在这样做,是不是效率比较低?假设上面的做法叫做(1),下面我想到另外两种做法,是否会提高效率?rnrn(2)rn[code=c]rnvoid UploadCheckInTobacco::set_check_in_tobacco(std::vector & check_in_tobacco_vector) rnrn check_in_tobacco_vector_.clear();rn copy(check_in_tobacco_vector.begin(), rn check_in_tobacco_vector.end(), rn back_inserter(check_in_tobacco_vector_));rnrn[/code]rnrn(3)rn[code=c]rnvoid UploadCheckInTobacco::set_check_in_tobacco(std::vector check_in_tobacco_vector) rnrn check_in_tobacco_vector_.swap(check_in_tobacco_vector);rn[/code]rn因为我不想改变实参vector(由于某种原因),所以参数这里没有使用引用型参数。但是check_in_tobacco_vector通常里面的数据比较多,不用引用型参数是否会降低程序性能?rnrn希望得到大家帮助,给我提提建议,怎么做才最好。谢谢。-_-rn
一个Vector赋值的问题
public void addCustomer(customer addCust) rn this.cust.addElement(addCust);rn /*测试*/rn for(int i=0;i < cust.size();i++) rn System.out.print(((customer)this.cust.elementAt(i)).getAddEn()+" ");rn rn System.out.println();rn rncustomer是我自己定义的一个类。getAddEn()是从数据库里面取回数据rn在传递参数中,测试addCust的传递值没有问题!rn用以上程序测试的结果是:所有的vector的数组的值竟然都是最后一个customer!rn也就是说假如第一个addCust的getAddEn()是add1的话,当在添加一个customer以后,就都变成add2了!rn以下是执行的结果:rnadd1rnadd2 add2rnadd3 add3 add3rnadd4 add4 add4 add4rn
vector赋值给vector
各位大侠们rn小弟遇到了一个问题rn//声明了一个存储字符串的数组rnchar ** ptr = new char *[number];rnvecter vec1;rnvec1.push_back(*ptr);rn之后小弟想 赋值 把vector 赋值给vector;rn小弟写的是 vector vec2;rnvec2.assign(vec1.begin(), vec1.end());rn但是提示不对,请各位高手帮看看,困扰我好久了。rn其实我就是想把一个char * 的数组赋值到vector中。还有什么好方法,麻烦了~~rn
C++ vector 赋值问题
先看如下一段代码rn[code=c]rn#include rn#include rn#include rnusing namespace std;rnclass studentrnrn public:rn student(int id,char *name)rn rn //cout<<"student(int id,char *name)"< stulist = stlist;rn vector::iterator it = stulist.begin();rn for( ; it!=stulist.end(); it++)rn rn cout<<*it<
c++ vector的赋值问题
如果一个对象是 vector a;rn那么给它赋值的话是rnfor(int i = 1; i <= 4; ++i)rn a.push_back(i);rnrnrn那么如果一个对象是rnvector result;rn其中rnstruct temprnrn float a;rn float b;rn float c;rn;rnrn请问,如果给result赋值呢?
vector的赋值问题
《C++ Primer第四版》第四章 数组 课后习题4.7rn编写代码将一个数组赋给另一个数组,然后把这段代码改用vector实现。rn考虑如何将一个vector赋给另一个vector。rnrn请教:答案上说将一个vector赋给另一个vector也需要像数组一样,逐个元素赋值rnvector ivec1(10, 20);rnvector ivec2;rnfor(vector::iterator iter=ivec1.begin(); iter!=ivec1.end(); ivec1++)rn ivec2.push_back(*iter);rnrn但是在第三章讲vector时不是说可以用已定义的vector初始化(或赋值)新定义的vector么?rn我这样写行么?rnvector ivec1(10, 20);rnvector ivec2 = ivec1;rn不是也算将ivec1赋给ivec2了么?rnrn请教原因。初次发帖,有何不当,请多海涵,多谢大家!^_^
vector赋值问题
void main()rnrnrnrn int i = 0;rn int s;rn vector v;rnrn for( i = 0; i < 10; i++ )rnrn rn v.push_back( i );//把元素一个一个存入到vector中rn rnrn [color=#FF0000]/* while(cin>>s)rn rn v.push_back( s );rn */[/color] rn for( i = 0; i < v.size(); i++ )rn rnrn cout << v[ i ] << " "; //把每个元素显示出来rnrn rnrn cout << endl;rnrnrn在VC6.0里,用for循环赋值后可以正常输出,但用while循环赋值却不能输出,这是什么情况
vector 赋值的问题
一个小程序,将一个vector的值赋给另一个vector,运行后出现“TempFile.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。” 怎么回事啊?rn[code=C/C++][/code]rn#includern#includernusing namespace std;rnrnint main() rnrn vector ivec(10,29);rn vector ivec1;rn ivec1=ivec;rn for(vector::iterator ix=ivec.begin();ix!=ivec1.end();ix++)rn rn ivec1.push_back(*ix);rn rn return 0;rn
vector<>赋值问题
…………rnint i=0;rnint r=0;rnvector num,num1;rn............. //num1和num已经分别被赋值rnnum1[i]=num[r];rn…………rn程序编译通过,可是在运行时出现一个对话框'0x指令不能读取0x000000内存'大概就是这样。debug一下可能是上面最后一行代码的问题。请问这样写错了吗?
leetcode+图上BFS,一次性过的+注意二维vector赋值问题
点击打开链接//一次性过的 #include &amp;lt;iostream&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;string&amp;gt; #include &amp;lt;cstring&amp;gt; #include &amp;lt;string.h&amp;gt; #include &amp;lt;algorithm&amp;gt; #includ
vc6使用二维vector的问题
vector&amp;lt;vector&amp;lt;BOOL&amp;gt;*&amp;gt;这里需要一个空格,*表示一个空格,没有空格就报错,别问我为什么
C++ 二维vector的初始化问题
今天在写一个程序时,需要使用到二维向量vector&lt;vector&lt;int&gt; &gt;,初始只能确定列数,但是无法确定行数 vector&lt;vector&lt;int&gt; &gt; result; 但是如果不初始化,直接使用 i=0; result[i].push_back(0); //想把0放入第一行中 会报错,这是因为该二维向量为...
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件