我有boost::array<int,8> array1
,并且我有std::vector<int> temp(8);
如何执行从std::move()
到boost::array
的{{1}},我想避免使用std::vector
。
答案 0 :(得分:7)
您不能仅仅将容器的内胆移动到std::vector
中。 std::vector
没有提供获取缓冲区所有权的方法。您将必须将各个元素复制/移动到std::vector
中。
您可以做的一件事是使用迭代器构造函数和std::make_move_iterator
将单个元素移到向量中。使用int
不会带来任何好处,但是如果类型移动快于复制,那么您会发现。看起来像
some_container foo;
// populate foo
std::vector<some_type> moved_into{std::make_move_iterator(std::begin(foo)),
std::make_move_iterator(std::end(foo))};
答案 1 :(得分:5)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial scale=1.0">
<link rel="stylesheet" href="BaseballScoreboard.css">
</head>
<body style="background-color:green;">
<div class="scoreboard">
<div>
<p id="atbat" class="text1">AT BAT</p>
<p id="atbatnum" class="num">12</p>
<p id="ball" class="text1">BALL</p>
<p id="ballnum" class="num">3</p>
<p id="strike" class="text1">STRIKE</p>
<p id="strikenum" class="num">2</p>
<p id="out" class="text1">OUT</p>
<p id="outnum" class="num">0</p>
</div>
<div>
<p id="inning" class="text2">INNING</p>
<p id="runs" class="text2">RUNS</p>
<p id="hits" class="text2">HITS</p>
<p id="errs" class="text2">ERRS</p>
</div>
<div>
<p id="visitor" class="text1">VISITOR</p>
<p id="home" class="text1">HOME</p>
</div>
</div>
</body>
</html>
和.scoreboard{
border: 5px solid;
border-color: white;
color: white;
height: 50%;
width: 100%;
}
.text1{
font-size: 50px;
float: left;
margin-left: 25px;
}
.text2{
font-size: 50px;
float: right;
margin-left: 25px;
}
.num{
font-size: 50px;
float: left;
margin-left: 15px;
background-color: black;
padding: 5px;
}
是无关的类型,因为boost::array
对如何从std::vector
进行构建一无所知。
另一方面,您可以将std::vector
与迭代器一起使用:
boost::array
答案 2 :(得分:0)
如果有必要,可以移动某物。
array
没有保存动态分配的缓冲区,因此没有“窃取”的内容。 int
不是可以移动的对象,因此同样,您甚至不能移动数组的各个元素。
简而言之,移动array<int>
毫无意义。