Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向量内分裂deques_C++ - Fatal编程技术网

C++ 向量内分裂deques

C++ 向量内分裂deques,c++,C++,我正试图处理一个非常奇怪的问题。我对STL容器没有太多的经验,所以它们的力学对我来说是一个很大的谜。好,回到主题。我需要创建一个deque向量,然后将该向量中的所有现有deque一分为二。从现在起,每半场都将创造独立的德克。 我期待着这样的事情: 向量{deque{1,2,3,4,5}------>向量{deque{1,2,3},deque{4,5} #包括 #包括 #包括 int main(){ std::vectorvector\u of_deque; 推回(std::deque{1,2,3

我正试图处理一个非常奇怪的问题。我对STL容器没有太多的经验,所以它们的力学对我来说是一个很大的谜。好,回到主题。我需要创建一个deque向量,然后将该向量中的所有现有deque一分为二。从现在起,每半场都将创造独立的德克。 我期待着这样的事情:

向量{deque{1,2,3,4,5}------>向量{deque{1,2,3},deque{4,5}

#包括
#包括
#包括
int main(){
std::vectorvector\u of_deque;
推回(std::deque{1,2,3,4,5})的向量;
std::deque deque=*(向量_of_deques.begin());
int-split_位置;
如果(deque.size()%2==0)
split_position=deque.size()/2;
其他的
split_position=int(deque.size()/2)+1;
向量u为deque.emplace_back(deque.begin()+split_位置,deque.end());
deque.erase(deque.begin()+拆分位置,deque.end());
for(自动i:矢量数据){
用于(自动j:i)

我认为问题在于:

std::deque<int> deque = *(vector_of_deques.begin());

您正在从副本中删除,而没有更改原始向量。

哦,天哪……当然这是问题所在。谢谢。现在我可以回去工作了。
*(vector\u Of_deques.begin());
更简洁地表示为
vector\u Of_deques.front();
std::deque<int> deque = *(vector_of_deques.begin());
deque.erase( deque.begin() + split_position, deque.end() );