将值从STL矢量存储到另一个矢量
Storing values from STL vector to another vector
我一度陷入困境,需要一些帮助。
我有一个STL
矢量,其值如下:
[1, 17, 2, 18, 3, 19, 1, 17, 2, 18, 3, 19, 1, 17, 2, 18, 3, 19].
注意,向量中的前六个值(即1、17、2、18、3、19)可以被认为是一个块。因此,这个向量有3个块,每个块的值如上所述。
现在,我想用以下方式组织这个向量:
[1, 17, 1, 17, 1, 17, 2, 18, 2, 18, 2, 18, 3, 19, 3, 19, 3, 19]
因此,本质上,我首先从每个块中挑选前两个值(即1,17),并将其顺序存储3次(基本上是块的#,在这种情况下是3)。然后我继续选择接下来的两个值(即2,18)并继续。
我该如何做到这一点。。?
任何帮助都将不胜感激。
感谢
一旦你弄清楚了确切的映射,听起来就很容易了。外部循环是每个块中块的数量,因为这是最终组的数量,中间循环遍历每个原始块,而内部循环只遍历块中的每个元素。最终结果应该类似(未经测试):
std::vector organized;
organized.reserve(data.size());
const int blockSize = 6;
const int subBlockSize = 2;
assert(data.size()%blockCount == 0 && blockSize%subBlockSize == 0);
const int blockCount = data.size()/blockSize;
const int subBlockCount = blockSize/subBlockSize;
for (int i = 0; i < subBlockCount; ++i)
for (int j = 0; j < blockCount; ++j)
for (int k = 0; k < subBlockSize; ++k)
organized.push_back(subBlockSize*i + blockSize*j + k);
只需创建一个函数shuffle(i)
,该函数将索引带入新数组,并从原始数组返回索引:
#include <iostream>
#include <cstdlib>
using namespace std;
int list[] = { 1, 17, 2, 18, 3, 19, 1, 17, 2, 18, 3, 19, 1, 17, 2, 18, 3, 19 };
int shuffle( int i )
{
div_t a = div( i, 6 );
div_t b = div( a.rem, 2 );
return 2*a.quot + 6*b.quot + b.rem;
}
int main()
{
for( int i=0 ; i<18 ; ++i ) cout << list[shuffle(i)] << ' ';
cout << endl;
return 0;
}
该输出:
1 17 1 17 1 17 2 18 2 18 2 18 3 19 3 19 3 19
只需分配新矢量,并从旧矢量中填充即可:
new_vector[i] = list[shuffle(i)];
相关文章:
- 将一个类的方法指针存储到另一个类中
- 存储另一个函数返回的布尔数组时遇到问题
- 对于存储另一个类所需信息的类,例如其构造,是否有设计模式?
- 如何将行的第一个单词作为一个变量,将行的其余部分作为另一个变量进行归档/存储
- 将类的任何模板存储在另一个类中
- 使用 libgit2 从另一个分支创建新的 git 存储库?
- SQLite3 C++检索 ID 并存储到另一个表
- 如何制作一个结构程序,在其中可以存储无限量的数据,以便每次您想要时都可以将另一个产品添加到列表中?
- 我可以有一个与另一个向量共享存储的向量
- 如何将矩阵存储在C 中另一个矩阵的行中
- OpenCV:文件存储操作员">>"在一个项目中工作,但不在另一个项目中工作(在同一类上)
- 如何在不复制的情况下将过滤向量的结果存储在另一个向量中
- 将对静态存储 cstyle 数组的引用从 constexpr 函数传递到另一个 constexpr 函数
- c++存储映射元组的引用,以便在另一个函数中使用
- 如何创建一个将队列作为数据成员的类,该成员在 c++ 中存储另一个类的实例
- 将值从一个 char 数组存储到另一个 char 数组
- HOWTO:读取输入并将其存储在另一个文件中
- 存储可变参数模板参数并在另一个类中使用它们
- 如何将变量存储在另一个文件中
- 当类名存储在另一个变量中时,如何创建类的实例