[英]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.