为什么此代码无法将字符push_back到向量中<char>?

Why is this code not able to push_back a char into a vector<char>?

本文关键字:向量 lt char gt back 代码 push 字符 为什么      更新时间:2023-10-16

我想将一个字符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;
}

我在代码块 IDE 中获得的输出:

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

您的实现问题在于

载体 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],您就可以看到它。

打印 A[0] 值,但 's' 被推回为 A[4] 值

通过使用调试器,您可以看到这一点

以这种方式定义向量,您的问题将得到解决

vector <char> A;