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

Concatenate 2 elements of same vector and put it in another vector

本文关键字:向量 另一个 元素 连接      更新时间:2023-10-16

我有:

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::p air 模板。这将为您提供任意类型的串联。另一种方法是使用多维向量,即

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