小编use*_*020的帖子

C++是否有现有的方法来检查对象是否是派生类型的对象?

C++是否有现有的方法来检查对象是否是派生类型的对象?例如,

class A
{};

class B : public A
{};

A* p;
Run Code Online (Sandbox Code Playgroud)

并检查是否p指向B.

c++ dynamic-cast

3
推荐指数
2
解决办法
866
查看次数

如何有效地实现将矢量数据分配给多个变量?

例如

void assign(vector<int> const& v, int a, float b)
{
    a = v[0];
    b = (float)v[1];
}
Run Code Online (Sandbox Code Playgroud)

这里的值类型不需要相同.我想创建一个函数来分配可变数量的变量.我可以使用variadic函数.但我认为使用参数包可能更有效.怎么实现呢?谢谢!

c++ variadic-templates c++11

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

如何使用独特的指针向量?

我用它vector<unique_ptr<Data>>来存储我的数据,用于自动内存管理和低成本unique_ptr.我有一个函数来尝试将新创建的数据添加到其中.可以真实地添加或不添加数据.它被添加,我不需要关心它的内存删除,因为指针向量将处理它.如果没有添加,我希望可以自动删除新创建的数据.有没有简单的方法来实现它?该功能可能如下所示或其他类似形式.谢谢.

// Return true if really added, return flase if not.
bool add(vector<unique_ptr<Data>>& vec, Data* newData);
Run Code Online (Sandbox Code Playgroud)

根据Dave的回答,bool add(vector<unique_ptr<Data>>& vec, std::unique_ptr<Data>& newData)unique_ptr非公共可复制以来更好吗?这里引用用于第二个参数.

c++ unique-ptr

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

这是什么意思?

在·std :: unique_ptr·文件"memory"中的代码中,我将操作符重载函数视为

typename tr1::add_reference<_Ty>::type operator*() const
{   
   // return reference to object
   return (*this->_Myptr);
}

pointer operator->() const
{
  // return pointer to class object
   return (&**this);
}
Run Code Online (Sandbox Code Playgroud)

&**第二个函数的意思是什么?谢谢.

c++ smart-pointers operator-overloading

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

如何替换菜单中的操作?

例如,我有一个菜单并在其中的某处添加一个操作。一段时间后,我想用新的操作替换该操作,因为它变得无效。如何实施?

QMenu* menu = new QMenu(this);
... 
QAction* action = menu->addAction("text");
...

QAction* newAction = new QAction(menu);

// how to replace?
Run Code Online (Sandbox Code Playgroud)

c++ qt menu

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

我应该检查什么:CPU 时间或墙上时间?

我有两种算法来完成相同的任务。要检查它们的性能,我应该检查什么:cpu time 或 wall time?我认为是 CPU 时间,对吧?

我正在对我的代码进行并行处理。要检查我的并行性能,我应该检查什么:cpu time 或 wall time?我认为是墙壁时间,对吧?

假设我已经使用多线程完成了理想的并行性。我认为 1 个线程的 cpu 时间将与 8 个线程相同,而 1 个线程的壁挂时间将比 8 个线程长 8 倍。这样对吗?

还有任何简单的方法来检查这些时间吗?

c++ performance profiling

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

如何解压缩类型定义的类型?

例如

struct A { typedef int Type; }
struct B { typedef float Type; }

template<class... Ts>
struct C
{
    typedef tuple<Ts::Type...> TupleType; // comilation error: parameter pack 
                                          // expects a type template argument
};
Run Code Online (Sandbox Code Playgroud)

如何解压缩类型定义的类型?

c++ templates variadic-templates c++11

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

如何使用boost预处理器来运行一系列函数?

例如,我有一系列函数f1,f2等,具有相同的两个参数类型.我想用宏

RUN((f1)(f2)(f3), a, b)
Run Code Online (Sandbox Code Playgroud)

用结果运行函数序列

f1(a, b), f2(a, b), f3(a, b)
Run Code Online (Sandbox Code Playgroud)

我认为升压预处理器可以提供帮助.我试过了

#define RUN_DETAIL(pR, pData, pF) pF(a, b);
#define RUN(pFs, a, b) BOOST_PP_SEQ_FOR_EACH(RUN_DETAIL, BOOST_PP_EMPTY, pFs)
Run Code Online (Sandbox Code Playgroud)

但失败了.怎么做?

找到答案如下

#define RUN_DETAIL(pR, pData, pF) pF pData;
#define RUN(pFs, ...) BOOST_PP_SEQ_FOR_EACH(RUN_DETAIL, (__VA_ARGS__), pFs)
Run Code Online (Sandbox Code Playgroud)

此技术也适用于调用宏序列.

c++ boost boost-preprocessor

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

如何使用json c ++和我自己的对象?

我打算在https://github.com/nlohmann/json#examples上使用json c ++ .阅读完简单的例子之后,我仍然不知道如何将它与我自己的对象一起使用?例如,我有一个班级

class Student
{
public:
    Student(int id, string const& name)
       : m_id(id), m_name(name)
    {}   

private:
    int m_id;
    string m_name;
};
Run Code Online (Sandbox Code Playgroud)

如何使用json读取和写入(反序列化和序列化)Student对象?

c++ serialization json deserialization

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

函数查找和命名空间

如果在调用它的作用域中找不到函数,则会查找其参数的名称空间.我有几个问题.

  1. 如果在不同的命名空间中有多个参数,首先会查找哪个命名空间?它是第一个参数的命名空间吗?

    f(A::T t, B:U u); // Is namespace A looked up first?
    
    Run Code Online (Sandbox Code Playgroud)
  2. 模板类更复杂,比如

    f(A::T<B::U> t); // Namespace A or B is looked up first?
    
    Run Code Online (Sandbox Code Playgroud)

c++ namespaces argument-dependent-lookup

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