我想将一个push_back
字符转换成一个向量并打印出来,但是我不知道为什么它没有被打印出来。
我不知道该怎么办,因为程序正在编译并返回0。
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<char> A(4);
char d = 's';
A.push_back(d);
// for(int i=0;i<3;i++)
{ cout << "first element is" << A[0]; }
return 0;
}
我进入CodeBlocks IDE的输出:
first element is
Process returned 0 (0x0) execution time : 0.444 s
答案 0 :(得分:5)
实施中的问题在于
向量A(4);
和
A.push_back(d);
行。
当您构造一个默认大小为4的向量时, 这意味着已经分配了A [0]至A [3]个索引 。 接下来,当您执行push_back()时,将元素推入下一个可能的索引(在您的情况下为4)。
因此, A.push_back(d); ->它所做的只是分配A [4],然后分配A [4] ='s' ;
只需打印A [4],就可以看到它。
答案 1 :(得分:0)
您打印A [0]值,但将's'作为A [4]值推回
通过使用调试器,您可以看到此
以这种方式定义向量将解决您的问题
vector <char> A;