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

时间:2019-08-25 06:46:38

标签: 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;
}

我进入CodeBlocks IDE的输出:

first element is
Process returned 0 (0x0)   execution time : 0.444 s

2 个答案:

答案 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;