C ++将pair <int,int>的向量复制到向量<int>

我有一对向量,我需要将它们线性复制为一个整数向量。我下面的代码运行良好,但是考虑到C ++中的结构填充问题,我不确定它是否安全。

std::vector < std::pair<int, int> > test_vector;
for (int i=0;i<5;i++) {
    test_vector.push_back(std::make_pair(i,i*5));
}
std::vector<int> int_vec(test_vector.size() * 2);
std::copy(reinterpret_cast<int*>(&(*test_vector.begin())),reinterpret_cast<int*>(&(*test_vector.end())),int_vec.begin());

现在,我的问题是-上面的代码安全吗?如果没有,是否有一种优雅的方法可以完成而不编写循环?

P0W

如何std::transform和lambda函数?

std::vector<int> v;
std::transform(test_vector.begin(), test_vector.end(), std::back_inserter(v), 
               [&v](const std::pair<int, int> &p) 
               { v.push_back( p.first);
                 return p.second ;});

如果您不能使用C ++ 11,并且可能“讨厌”使用循环进行线性复制

您可以像这样使用functor:

struct X{
    X(std::vector<int> &x) :v(x){}
    int operator () (const std::pair<int, int> &p)
    {
        v.push_back(p.first);
        return p.second;
    }
    std::vector<int> &v;
};

std::vector<int> v; //Final vector

std::transform(test_vector.begin(), 
               test_vector.end(), 
               std::back_inserter(v), 
               X(v));

std::vector<int> ::iterator it;

for(it=v.begin() ; it!=v.end() ;++it)
  std::cout<<*it<<" ";

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pair <int,int>的向量的哈希函数

来自分类Dev

C ++将数据从浮点向量复制到浮点对的向量

来自分类Dev

将Ascii值复制到int

来自分类Dev

如何对向量<pair <string,pair <int,int >>>进行排序?

来自分类Dev

C ++返回std :: pair <int *,int *>?

来自分类Dev

无符号int向量c ++

来自分类Dev

如何将vector <pair <string,int >>中的字符串复制到vector <string>?

来自分类Dev

如何在C ++中将素因子向量<int>减少到map <int,int>?

来自分类Dev

C ++ 2D向量-将int转换为double

来自分类Dev

将int向量转换为str向量

来自分类Dev

将向量<char>复制到2d向量<string> C ++

来自分类Dev

通过转换将C ++向量复制到另一个向量的最佳方法

来自分类Dev

仅将向量中的字母复制到C ++中的另一个向量

来自分类Dev

将列表的内容复制到Dictionary <int,string>

来自分类Dev

如何将 int 复制到 u_char*

来自分类Dev

对向量对<int,int>进行排序

来自分类Dev

C-“从“ int *”到“ int”的无效转换

来自分类Dev

C ++从int *到int的无效转换

来自分类Dev

C - 从 int* 到 int 的无效转换

来自分类Dev

在向量C ++中删除重复的int数

来自分类Dev

使用向量合并排序(int)C ++

来自分类Dev

从向量C ++添加int元素时出错

来自分类Dev

在向量C ++中删除重复的int数

来自分类Dev

将int存储为ascii代码的向量

来自分类Dev

在 C++ 中的 multiset<pair<int,int> > 中寻找下界

来自分类Dev

无法在 C++ 中实现队列 <pair<int, int*> >

来自分类Dev

如何将类型为int / double / string / int []的参数从C#传递到本机C?

来自分类Dev

在C ++ 17中初始化int向量的向量

来自分类Dev

嵌套循环以填充 C++ 中 int 向量的向量

Related 相关文章

热门标签

归档