Vector, assign() function Undefined Behavior
Vector, assign() function Undefined Behavior
我很好奇; 如果我们像下面这样使用,矢量中的 assign(( 函数会导致未定义的行为;
std::vector<unsigned char> vec{0xAB,0xBC,0xCD};
std::vector<unsigned char> vec2{0xAA,0xBB,0xCC};
vec.assign(vec2.begin(),vec2.begin()+ vec.size());
vec.size()
返回vec
的大小,因为它恰好与vec2
具有相同的大小,因此您的代码没有问题(当然除了一些混淆(。大小从何而来并不重要。如果vec.size() == vec2.size() == 3
以下所有操作都将执行相同的操作:
vec.assign(vec2.begin(),vec2.begin()+ vec.size());
vec.assign(vec2.begin(),vec2.begin()+ vec2.size());
vec.assign(vec2.begin(),vec2.begin()+ 3);
auto x = vec2.size();
vec.assign(vec2.begin(),vec2.begin()+ x);
auto y = x + 42;
vec.assign(vec2.begin(),vec2.begin()+ y-42);
当然,当你的意思是vec2.size()
是"错误的"时,使用vec.size()
,因为一旦向量具有不同的大小,你就会有未定义的行为来越界访问两个向量中的任何一个。
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- Confusion: decltype vs std::function
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 为什么 std::function 可以作为 std::not2 的参数?
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- 传递给std::function template的template参数究竟代表什么
- "Undefined class"作为is_base_of的论据
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 将带有unique_ptr的可变 lambda 传递给 const&std::function
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- Vector, assign() function Undefined Behavior
- C++ "undefined reference to class::function"
- 我收到错误:"in function main: undefined reference to Fraction::Fraction()"
- 清"undefined reference to function"
- 在我的C++游戏中出现"undefined reference to class::function"错误。
- 使用 llvm::Function::d ump(),链接器可以"undefined reference to `llvm::Value::dump() const'"