如何打印出矢量图?
How to print out a vector?
我一直在研究一种将数字输入向量然后输出的方法,但它总是说向量超出范围并弹出一个非常奇怪的错误。没有任何编译错误,但是当程序到达我打算打印出向量的代码部分时,它会出现以下错误:
能不能不用cout
语句打印出向量?
// Program to ask the user for numbers, and when they are done entering numbers, enter DONE. When DONE, print the vector
#include <iostream>
#include <algorithm>
#include <vector>
#define DONE 20
using namespace std;
void l_userinput()
{
int u_Answer;
int vector_Size(0);
int start_Size(0);
vector<int> v_Name(start_Size);
//intialize variables and the initial size of vector
cout << "Please enter numbers and when you are done, type in DONE" << endl;
while (!start_Size)
{
cin >> u_Answer;
vector_Size++;
if (u_Answer == 20)
break;
//Loop until you type in DONE
}
for (int i = 0; i < vector_Size; i++)
{
cout << v_Name[i];
//point of error, Vector out of range?
if (i >= vector_Size)
{
break;
}
}
}
int main()
{
l_userinput();
return 0;
}
您没有将 u_Answer
添加到 v_Name
,因此当您尝试打印内容时,矢量为空。尝试访问空向量的任何元素会导致未定义的行为。
您的代码有几个问题。首先,您使用附加变量来保持矢量大小。这不是必需的 - vector 具有 size()
成员函数。
其次,您根本没有填充向量,相反,您只是不断递增计数器 - 因此您试图访问不在向量中的元素。
第三,你的 #define
of DONE
与用户输入单词 DONE 无关。要完成循环,用户必须输入 20。
我一直在研究一种将数字输入向量然后输出的方法,但它总是说向量超出范围并弹出一个非常奇怪的错误。没有任何编译错误,但是当程序到达我打算打印出向量的代码部分时,它会出现以下错误:
能不能不用cout
语句打印出向量?
// Program to ask the user for numbers, and when they are done entering numbers, enter DONE. When DONE, print the vector
#include <iostream>
#include <algorithm>
#include <vector>
#define DONE 20
using namespace std;
void l_userinput()
{
int u_Answer;
int vector_Size(0);
int start_Size(0);
vector<int> v_Name(start_Size);
//intialize variables and the initial size of vector
cout << "Please enter numbers and when you are done, type in DONE" << endl;
while (!start_Size)
{
cin >> u_Answer;
vector_Size++;
if (u_Answer == 20)
break;
//Loop until you type in DONE
}
for (int i = 0; i < vector_Size; i++)
{
cout << v_Name[i];
//point of error, Vector out of range?
if (i >= vector_Size)
{
break;
}
}
}
int main()
{
l_userinput();
return 0;
}
您没有将 u_Answer
添加到 v_Name
,因此当您尝试打印内容时,矢量为空。尝试访问空向量的任何元素会导致未定义的行为。
您的代码有几个问题。首先,您使用附加变量来保持矢量大小。这不是必需的 - vector 具有 size()
成员函数。
其次,您根本没有填充向量,相反,您只是不断递增计数器 - 因此您试图访问不在向量中的元素。
第三,你的 #define
of DONE
与用户输入单词 DONE 无关。要完成循环,用户必须输入 20。