繁体   English   中英

连接同一向量的2个元素,并将其放入另一个向量

[英]Concatenate 2 elements of same vector and put it in another vector

我有:

std::vector<unsigned int> data;

data[0] = 1;
data[1] = 1;
data[2] = 0;
data[3] = 1;
data[4] = 0;
data[5] = 2;
data[6] = 0;
data[7] = 2;
data[8] = 1;
data[9] = 2;
data[10] = 1;
data[11] = 2;

现在我要成对排列,例如11 01 02 02 12 12。

paired_data[0] = data[0]data[1]
paired_data[1] = data[2]data[3] etc....

paired_data[0] = 11;
paired_data[1] = 01;
paired_data[2] = 02;
paired_data[3] = 02;
paired_data[4] = 12;
paired_data[5] = 12;

我认为串联向量可以在这里解决,但我不确定如何。 有人可以建议我使用向量级联(或任何其他逻辑)来处理此问题吗?

如果数据是bool型的,那么使用左/右移位将很容易处理。 但是data包含三元数据(0,1,2),那么我该如何处理呢?

首先,您需要正确定义“串联”操作。 您是说按位级联还是复杂?

一种方法是使用std :: pair模板。 这将为您提供任意类型的串联。 另一种方法是使用多维矢量,即

std::vector<int> data;
std::vector<std::array<int,2>> paired_data;
for (size_t i = 0; i < data.size() - 1; i+=2)
{
  paired_data.push_back(std::array<int,2>{{data[i], data[i+1]}});
}

您可以轻松地进行转换并以这种方式进行处理,但是我不确定您想要什么

vector<unsigned int> data; // vector
unsigned int a = 4;
unsigned int b = 5;
data.push_back(a);      //push in vector
data.push_back(b);
int count=0;

    ostringstream oss; //convert
    oss << a << b;             //concatenate
    istringstream iss(oss.str());
    int c;
    iss >> c;  //  convert to int
    vector<unsigned int >paired_data;
    paired_data.push_back(c);


try to put this in a loop where u concatenate always two loop interations

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM