小编bar*_*tek的帖子

将容器划分为块,C++

给定一个N元素向量v = ( 1, 2, 3, 4, ... , N )返回范围迭代器覆盖所有大小的块K<N.最后一个范围可以小于Kif N%K!=0.

例如:

v = ("a","b","c","d","e")
Run Code Online (Sandbox Code Playgroud)

显示字符串

"ab", "cd", "e"

N=v.size();
K=2;
Run Code Online (Sandbox Code Playgroud)

一种可能的解决方案是

for( unsigned int i=0; i<v.size(); i+=K )
    cout << boost::join( v | boost::adaptors::sliced( i, min(i+K, v.size()) ), "" );
Run Code Online (Sandbox Code Playgroud)

这个解决方案很好,但它有几个问题:

  1. for 循环 - 它需要吗?
  2. 如果你写i+K而不是min(i+K, v.size())算法压缩,你需要额外注意边界情况.这看起来很丑陋,分散注意力.

你能提出更优雅的解决方案吗?通过优雅的解决方案,我的意思是使用通用算法,由常用库(例如boost)构建或提供.

-------------------------- [edit] --------------------- -----

你们当中有些人在这方面取得了成功.

#include <iostream>
#include <vector>
#include <string>
#include <boost/range/adaptor/sliced.hpp>
#include <boost/algorithm/string/join.hpp>
#include <boost/assign.hpp> …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

16
推荐指数
3
解决办法
6041
查看次数

C++拷贝构造函数和浅拷贝

假设我有一个具有许多显式(静态分配)成员的类和几个动态分配的指针.

当我在巫婆中声明一个复制构造函数时,我会手动分配成员的深层副本,我不想复制每个静态分配的成员explicite.

如何在显式复制构造函数中使用隐式(默认)复制构造函数?

c++

3
推荐指数
1
解决办法
3096
查看次数

C++智能指针指向静态和动态分配的资源

我的基类需要公开一个方法,对于某些派生类,它会返回一个指向动态分配数组的智能指针,对于某些其他派生类,它将返回一个指向静态分配的指针/引用.

例:

class Base
{
  public:
  virtual ??? foo()=0;
}

class A : public Base
{ 
  private:
  float arr[10];   
  public:
  ??? foo(){ return ???arr; }
}

class B : public Base
{
  public:
  ??? foo(){ 
      allocate array;
      return ???array; 
  }
}
Run Code Online (Sandbox Code Playgroud)

动态分配的数组是在类方法中创建的,我更喜欢使用std::unique_ptr.但是我应该为类中的静态分配数组做些什么A呢?

我应该创建自己的派生类,std::unique_ptr它会知道指针分配,并且不会试图破坏静态分配的指针,或者可能已经存在这样的智能指针?

c++ smart-pointers

2
推荐指数
1
解决办法
452
查看次数

标签 统计

c++ ×3

c++11 ×1

smart-pointers ×1