为什么此代码无法将char推回vector <char>中?

moo*_*nes 2 c++ vector char

我想将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;
}
Run Code Online (Sandbox Code Playgroud)

我进入CodeBlocks IDE的输出:

first element is
Process returned 0 (0x0)   execution time : 0.444 s
Run Code Online (Sandbox Code Playgroud)

小智 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],就可以看到它。