C++ 通过第一个向量的偶数索引和第二个向量的奇数索引将两个向量合并为第三个向量
我试图将两个向量合并成第三个向量,方法是从第一个向量复制/合并偶数索引处的元素,从第二个向量复制/合并奇数索引处的元素 注:两个矢量都是二维的 我有以下逻辑,但似乎不起作用:C++ 通过第一个向量的偶数索引和第二个向量的奇数索引将两个向量合并为第三个向量,c++,vector,merge,C++,Vector,Merge,我试图将两个向量合并成第三个向量,方法是从第一个向量复制/合并偶数索引处的元素,从第二个向量复制/合并奇数索引处的元素 注:两个矢量都是二维的 我有以下逻辑,但似乎不起作用: void pattern::mergePatters( void ) { cout<<"\n This is Merge Patters"<<endl; patter_input.reserve( patter_one.size() + patter_two.size() ); fo
void pattern::mergePatters( void ) {
cout<<"\n This is Merge Patters"<<endl;
patter_input.reserve( patter_one.size() + patter_two.size() );
for( int i=0;i<patter_one.size(); i++ ){
for( int j =0; j<patter_one[i].size(); j++){
if(j%2==0){
patter_input.push_back( patter_one[j]);
}
}
//cout<< " patter_one answers["<<i<<"]= " << answers_p1[i]<<endl;
}
for( int i=0;i<patter_two.size(); i++ ){
for( int j =0; j<patter_two[i].size(); j++){
if(j%2!=0){
patter_input.push_back( patter_two[j]);
}
}
//cout<< " patter_one answers["<<i<<"]= " << answers_p1[i]<<endl;
}
}
void pattern::printMergePatters ( void ){
cout<<"\n This is printMergePatters "<<endl;
for ( int i=0;i<patter_input.size();i++){
for( int j =0; j<patter_input[i].size(); j++){
cout << " Merge Patter["<<i<<"]["<<j<<"]= " << patter_input[i][j]<<endl;
}
}
}
void模式::合并模式(void){
cout我建议您在一个循环中执行实际复制,而不是使用两个循环。对于patterone
和pattertwo
数组,使用迭代器可能更容易,但我将使用索引
const unsigned int total_size = patter_one.size() + patter_two.size();
patter_input.reserve(total_size);
unsigned int p1_index = 0U;
unsigned int p2_index = 0U;
for (unsigned int i = 0U; i < total_size; i += 2U)
{
patter_input.push_back(patter_one[p1_index]);
patter_input.push_back(patter_two[p2_index]);
++p1_index;
++p2_index;
}
这些要求需要澄清,因此我提出了两个备选方案。根据模式一
和模式二
向量的大小,保留的数量可能不正确。上面的片段只复制了模式一
和模式二
向量的一半,因此您原来的保留
反义词可能不正确
复制一半的模式*
向量的保留量为:
const unsigned int total_size = patter_one.size() / 2 // Only even items
+ patter_two.size() / 2; // Only odd from here.
什么不起作用?不清楚您想如何合并。示例输入/输出可能会有所帮助。您可能多次将整个patterone[j]
添加到patterone[j]
中。鉴于patterone[j]
本身似乎是一个向量,这可能不是您想要做的。
const unsigned int total_size = patter_one.size() / 2 // Only even items
+ patter_two.size() / 2; // Only odd from here.