我有:
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),那么我该如何处理呢?
答案 0 :(得分:1)
首先,您需要正确定义“连接”操作。你的意思是逐位串联还是复杂的东西?
一种方法是使用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]}});
}
答案 1 :(得分:0)
你可以轻松转换它并以这种方式继承,但我不确定你想要什么
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