gpt4 book ai didi

c++ - 用 2 个字符串字面量构造一个 vector

转载 作者:行者123 更新时间:2023-12-01 11:58:05 25 4
gpt4 key购买 nike

对于以下程序:

#include <vector>
#include <iostream>

int main()
{
std::vector<int> v = {"a", "b"};

for(int i : v)
std::cout << i << " ";
}
叮当印 97 0 . 'a'的ascii值是 97,但我不完全理解输出。
另一方面,gcc 会抛出异常:
terminate called after throwing an instance of 'std::length_error'
what(): cannot create std::vector larger than max_size()
所以我假设它使用了带有大小和默认值的 2 参数构造函数,其中大小是根据字符串文字的地址计算的 "a" .
如果程序格式良好,那么正确的行为是什么?这是 code .

最佳答案

I assume it's using the 2 argument constructor that takes the size and default value


不,它正在使用 constructor采用两个输入迭代器。 "a""b"可能衰减为有效迭代器的指针。作为指向 const char 的指针(迭代器) ,取消引用 const char将转换为 int并添加为 vector的元素。无论如何,代码有 UB 因为 "a""b"不要引用有效范围, "b"无法从 "a" 访问.

关于c++ - 用 2 个字符串字面量构造一个 vector<int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62835713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com