gpt4 book ai didi

c++ - std::vector>::clear() VS 2010 无编译

转载 作者:行者123 更新时间:2023-11-28 00:40:07 25 4
gpt4 key购买 nike

以下代码无法在 Visual Studio 2010 中编译。为什么?

#include <vector>
#include <tuple>

int main() {
std::vector<std::pair<const int, const int> > myVec;
for(int i=0; i<88; ++i)
myVec.push_back(std::make_pair<const int, const int>(1,i));
myVec.clear();
return 0;
}

如果我省略了清除 vector 的那一行,它就可以正常工作。我想要一个空的 myVec。也抹不掉。 pop_back 有效。 std::swap 没有。

最佳答案

vector 上的明确操作要求元素类型满足MoveAssignable(参见[C++11: 23.2.3]中的表100),其中一对const ints 显然不是。

因此,您的程序是无效的 C++。

不要存储const 元素。如果您愿意,可以将 vector 本身公开为 const

关于c++ - std::vector<std::pair<const int, const int>>::clear() VS 2010 无编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19276952/

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