欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vector使用过程出现的问题记录

程序员文章站 2024-02-10 13:17:46
...

1不知道为毛的错误

vector<vector<int>> A;
	int temp;
	A.resize(4);
	for ( auto &vec :A)
	{
		vec.resize(4);
		
	}
	
	for (int i = 0; i < A.size(); i++)
	{
		for (int j = 0; j < A[i].size(); j++)
		{
			//cout << A[i].size();
			cin >> temp;
			//A[i][j] = temp;
			A[i].push_back(temp);
		}
	}

在电脑上运行如上碰到问题:一直输入没有自动跳出,当把A.size(),A[i].size()换成4之后可以运行。
单独输出A[i].size(),和A.size()也是4,很奇怪,做个记号。

换成A[i][j] = temp赋值的时候问题消失???为毛

2.vector subscript out of range问题
出现问题的代码行:

	for (int i = 0; i <= A.size(); i++) {

		reverse(A[i].begin(), A[i].end());
		for (int j = 0; j <= A[i].size(); j++) {

			if (A[i][j] == 1)
			{
				A[i][j] = 0;
			}
			else {
				A[i][j] = 1;
			}
		}
	}

问题:使用下标可能出现的越界。上面判断条件应该是i < A.size()和j < A[i].size()

3冒泡问题的进一步认识(leetcode905)
错误做法:

for (int i = 0; i < A.size()-1; i++) {

		for (int j = i; j < A.size()-1; j++)
		{

			if ((A[j]%2)==1&&(A[j+1]%2==0))
			{
				temp = A[j];
				A[j] = A[j + 1];
				A[j + 1] = temp;
			}

		}
    }

把一个vector中的偶数放前面奇数放后面,想到了冒泡算法,但是做出来是错误的,不管是从前面开始冒泡还是从最后,但还是借鉴了一点这个思想,定义了一个count用于交换,交换一次就自加一次。
提交五次,心累,下次要想好再动手写。

  int temp;
	    int count=0;
	for (int i = 0; i < A.size(); i++) {
			if ((A[i]%2)==0||A[i]==0)
			{
				temp = A[count];
				A[count] = A[i ];
				A[i ] = temp;
				count++;
			}	
	}