Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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++ C++;编写一个函数,在一个向量中交错两个向量的内容_C++_Vector - Fatal编程技术网

C++ C++;编写一个函数,在一个向量中交错两个向量的内容

C++ C++;编写一个函数,在一个向量中交错两个向量的内容,c++,vector,C++,Vector,我想写一个函数,将两个向量作为参数(int)并返回一个向量。。。 现在在函数中,我必须交错2个向量的值,并将它们(交错)放入一个新向量中,例如: vector<int> vec1 = {1,2,3, 4, 5,6,7}; vector<int> vec2 = {10,11,12}; => Output vec 3 = 1,10,2,11,3,12,4,5,6,7 vec1={1,2,3,4,5,6,7}; 向量vec2={10,11,12}; =>输出向量3=1,

我想写一个函数,将两个向量作为参数(int)并返回一个向量。。。 现在在函数中,我必须交错2个向量的值,并将它们(交错)放入一个新向量中,例如:

vector<int> vec1 = {1,2,3, 4, 5,6,7};
vector<int> vec2 = {10,11,12};
=> Output vec 3 = 1,10,2,11,3,12,4,5,6,7
vec1={1,2,3,4,5,6,7};
向量vec2={10,11,12};
=>输出向量3=1,10,2,11,3,12,4,5,6,7
向量可以有不同的长度。。。我怎么做这个?我试过:

vector<int>  entrelace(vector<int> a , vector<int> b) {
    vector<int> vec3(a.size()+b.size());        
    size_t i(0);
    size_t j(0);
    size_t k(0);
    size_t t(0);

    while ( t< vec3.size()) {

            if (i < a.size()) {
                vec3[k] = a[i];
                k++;
                i++;
            }
            if (j < b.size()) {
                vec3[k] = b[j];
                k++;
                j++;
            }       
        }
        t++;

    /**
    while ( i< (a.size() + b.size()) )
    {
        if (t < a.size()) {
            vec3.push_back(a[t]);
            t++;
            k++;
        }
        if (h < b.size()) {
            vec3.push_back(b[h]);
            h++;
            k++;
        }
    i++;    
    }
    * **/
    return vec3;
}
向量中心(向量a、向量b){
向量vec3(a.size()+b.size());
尺寸i(0);
尺寸j(0);
尺寸k(0);
尺寸t(0);
而(t
你几乎是对的。每次在
vec3

while ( t< vec3.size()) {
    if (i < a.size()) {
        vec3[k] = a[i];
        k++;
        i++;
        t++;
    }
    if (j < b.size()) {
        vec3[k] = b[j];
        k++;
        j++;
        t++;
    }       
}

为什么
t++
while
循环之外?但是这样写的话,您可以看到
k
t
都是不必要的。其中一个可以移除。@john,你刚刚打败了我。我想先展示一个与原始代码偏差最小的解决方案。我现在添加了一个简化版本。好吧,很抱歉,但是你在一开始就抢先找到了答案@约翰没有批评的意思。这是一个很好的评论,很值得发布。
while (k < vec3.size()) {
    if (i < a.size()) {
        vec3[k++] = a[i++];
    }
    if (j < b.size()) {
        vec3[k++] = b[j++];
    }       
}