小编nnr*_*les的帖子

如何使用STL复制map,过滤和减少C++中的行为?

我想我们可以使用std :: transform来复制C++中的地图行为,如下所示:

std::vector<int> in = { 1 , 2 , 3 ,4 }; 
std::vector<int> out(in.size()); 

std::transform(in.being() , in.end() , out.begin() , [](const int & val)
{
    return val+1;
});
Run Code Online (Sandbox Code Playgroud)

我想更好的方法是使用后插入器.

std::vector<int> out2;

std::transform(in.begin() , in.end() , std::back_inserter(out2) , [](const int & val){
      return val + 1;
});

// out will be { 2 , 3 ,4 ,5 }
Run Code Online (Sandbox Code Playgroud)

我对吗 ?如何使用STL进行过滤并减少C++中的操作?

c++ functional-programming stl c++11

15
推荐指数
2
解决办法
4669
查看次数

从调度队列块创建线程[swift/c ++]

我有一个iOS应用程序,其中UI是用swift编写的,但所有繁重的工作都是通过跨平台的c ++库完成的.我使用ObjC包装器从swift与c ++核心进行通信.

我想使用c ++提供的线程原语来并行化c ++库中正在进行的工作.

但是,一段数据从应用程序的swift部分传递到c ++库中,从调度队列中的块内传递.

我的问题是,我在c ++库中创建的那些线程是否会与swift中的工作队列分开?从我的理解,它将是.是这样的吗?

是否存在任何类似的开源项目,或者您使用此方法看到的任何陷阱.

C++库是一个要求,我不能只使它快速.

c++ multithreading ios swift

5
推荐指数
1
解决办法
339
查看次数

如何在std :: map中找到min/max,就像在std :: set中一样?

由于set和map都是有序容器,因此std :: map中的min和max可以在0(1)时间内找到,就像std :: set一样?

// for std::set
// std::set<int> s;
auto min = *s.begin();

auto max = *s.rbegin();
Run Code Online (Sandbox Code Playgroud)

如何从std :: map中获取O(1)中的max和min?这里的其他问题似乎建议迭代遍历地图,但我们不能使用std :: map的有序rightlt来更快地获得结果吗?

c++ stdmap set stdset c++11

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

提高std :: vector的存储容量/性能

我正在构建一个建模软件我有一些关于如何获得最佳性能的问题?

1)我应该使用std::vector<class>std::vector<class*>?我的类非常复杂/大,我认为使用第二个选项更好,因为std :: vector试图连续分配内存并且可能没有连续的内存块来存储一百万class,但是当我只存储指针时,class不必连续存储只有指针必须存储,计算机可能有空间来执行此操作.这个推理是否正确?

2)正如我所说,我将有数百万class,(为了正确的模拟,我将需要>十亿class)继承是一个聪明的事情在这里使用?对于我的模拟,有多个不同的类型继承自同一个基类,

class A - class B 
        - class C
        - class D 
Run Code Online (Sandbox Code Playgroud)

我是否应该避免继承,因为我一直听说使用继承会有性能损失?

3)另外如何将所有这些不同的类存储在std :: vector中?可以存储std::vector<base_class * >std::vector<base_class>存储类B,类C,类D都继承自基类吗?

4)在程序的前一版本中,我通过使不同的进程处理std :: vector的不同部分来使用多线程,是否有更好的方法来执行线程?

5)我应该使用智能指针吗?由于我有这么多物体,它们会降低性能吗?

我正处于计划阶段,非常感谢任何帮助.

c++ inheritance multithreading vector c++11

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

使用模板定义位集的大小

我有一堂课

template <class MAX> 
class A 
{
   std::bitset<MAX> _mem ; 
}
Run Code Online (Sandbox Code Playgroud)

此类的目的是使我可以拥有可变长度的位集。在我程序的不同部分中使用。

但是c完成给我错误

template argument for non type template parameter should be an expression
Run Code Online (Sandbox Code Playgroud)

c++ templates bitset

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

何时对堆中的对象调用 C++ 析构函数?

假设一个类及其用法

#include <vector>
class B
{
 public:
     B() {temp = 0;}; // implemented 
    ~B() {} ; // implmented 
 private : 
      int temp; 
      // it holds a std::bitset , a std::vector.. It is quite large in size.
};

class A 
{
    private:
    std::vector<B*> * _data ; 
    public: 
    A()
    {
       _data = new std::vector<B*>(0); 
    }
    ~A()
     {
         for(unsigned int idx_ = 0; idx_ < _data->size(); ++idx_)
              delete _data->at(idx_);
         delete _data ; 
     }
     void addB()
     {
          B * temp = new B();
          _data->push_back(temp); …
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-leaks vector

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

cpp中枚举的内存要求是什么?

我正在创建一个包含许多部分的大规模模拟,我使用枚举来区分多个部分.我想知道使用枚举的内存成本是多少,因为我希望将部件占用的空间保持在最小.

使用uint8_t而不是枚举更好吗?

c++ memory enums

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

uint8_t,uint16_t是否分别保证为8位和16位?

我做了一个模拟,并希望保持内存成本,因此使用uint8_t,uint16_t为类成员.cpp是否保证它们是8位和16位?

基于我应该注意的过程体系结构是否存在差异?

c++ uint8t

-2
推荐指数
2
解决办法
254
查看次数