为什么此代码无法将字符push_back到向量中<char>?
Why is this code not able to push_back a char into a 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;
}
我在代码块 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;
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 呼叫运营商<<临时
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- 如何加入向量&lt; int&gt;到C 中的单个INT
- (C 14)操作员&lt;&lt;超负荷无法正如智能指针向量所预期的那样工作
- 如何过载<<用于YAML::Emitter的运算符,以序列化包含另一个自定义类的向量的自定义类