bee*_*hnu 0 c++ stl vector stdvector
作为向量的一部分,使用 [] 我无法初始化。
std::vector<int> vectorVar;
vectorVar[0] = 0;
Run Code Online (Sandbox Code Playgroud)
看到未定义的行为。
而只有在已经创建的情况下才能使用。
vectorVar.push_back(0);
vectorVar[0] = 5;
Run Code Online (Sandbox Code Playgroud)
但如果有地图,即使没有条目也可以使用。
std::map<int, std::vector<int>> mapVar;
mapVar[0] = vectorVar;
Run Code Online (Sandbox Code Playgroud)
请澄清。
感谢和问候 毗湿奴比玛
如果“vectorVar[0] = 0;”,则会出现未定义的行为
std::map::operator[]与其他有些不同,[]因为它不仅仅是元素访问。更多的是。
来自cppreference:
返回对映射到与 key 等效的键的值的引用,如果该键不存在则执行插入。
当映射中没有具有给定键的元素时,会将一个元素插入到映射中。
向量不是这样工作的。std::vector::operator[]不向向量中插入元素。
一般来说,您需要获得可以查找内容的参考。C++ 太复杂了,无法记住所有内容。我建议使用https://en.cppreference.com/,因为它通常与标准中的措辞相当接近,但同时又非常可读。