有没有什么方法可以移动 unordered_map
值到 vector ?我能够找到复制值的所有方法(就像在我的示例中一样),而不是使用类似于 std::move
的方法。
我不想复制值,所以我可以保留 shared_ptr
foo 的唯一性,稍后我会将其更改为 unique_ptr
。
class Class {
public:
std::shared_ptr <int> foo = std::shared_ptr <int> (new int (5));
};
int main() {
std::unordered_map <int, Class> mapOfObjects({
{1, Class()},
{2, Class()},
{3, Class()},
{4, Class()},
{5, Class()} });
std::vector <Class> someVector;
for (auto &object : mapOfObjects) {
someVector.push_back(object.second);
std::cout << "Is unique? " << ( someVector.back().foo.unique() ? "Yes." : "No.")
<< std::endl << std::endl;
}
}
预先感谢您提供所有有用的答案。
最佳答案
您当然可以将 shared_ptr
从 unordered_map
移动到 vector
。您需要做的就是在示例中使用 std::move
:
someVector.push_back(std::move(object.second));
请记住,在此操作之后,您可能想要清除 map ,因为它现在包含空对象。
关于c++ - 将 std::unordered_map 值移动到 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53268662/