小编ven*_*rty的帖子

警告:已弃用从字符串常量转换为'char*''

可能重复:
如何摆脱deprecated conversion from string constant to ‘char*’海湾合作委员会的警告?

我使用库中的以下功能,我无法改变:

HRESULT DynamicTag(char * pDesc, int * const pTag ); 
Run Code Online (Sandbox Code Playgroud)

我用它如下.我创建了实现上述函数的库提供的类的对象.

int tag =0;
g_pCallback->DynamicTag("MyLogger", &tag);
Run Code Online (Sandbox Code Playgroud)

我收到以下警告:

warning: deprecated conversion from string constant to 'char*'
Run Code Online (Sandbox Code Playgroud)

摆脱上述警告的最佳方法是什么?我不想动态分配内存.

信息:我正在使用Vxworks6.8编译器

c++ compiler-warnings

17
推荐指数
1
解决办法
4万
查看次数

C++异常catch子句

可能重复:
C++中异常对象的范围

我有以下catch子句:

catch(Widget w);
catch(Widget& w);

void passAndThrowWidget() {
          Widget localWidget;
      throw localWidget;
}
Run Code Online (Sandbox Code Playgroud)

如果我们按值捕获Widget对象,编译器将进行复制,因此当我们抛出异常时,localWidget超出范围,我们没有看到任何问题.

如果我们通过引用捕获widget对象,根据参考概念,"w"指向相同的本地Widget而不是副本.但我已经看到大多数异常都是由C++中的引用捕获的.我的问题是如何工作"localWidget"超出范围时抛出异常并通过引用捕获指向被破坏的对象.

谢谢!

c++

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

删除类中的自我对象

可能重复:
C++:删除这个?

在C++中,可以删除函数定义中的自身对象.这有什么副作用?

class MyClass {

public:
    void ~myClass() {}
    void myFunction() { 
        // logic here
        delete this;
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++

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

二叉树级别顺序遍历

三种类型的树遍历是有序,预订和后置顺序.

第四种不经常使用的遍历是水平顺序遍历.在水平顺序traveresal中,深度为"d"的所有节点在深度为d + 1的任何节点之前被处理.级别顺序遍历与其他遍历的不同之处在于它不是递归地完成的; 使用队列,而不是隐含的递归堆栈.

我对上述文字片段的疑问是

  1. 为什么级别订单遍历不是递归完成的?
  2. 如何在级别顺序遍历中使用队列?使用伪代码澄清请求会很有帮助.

谢谢!

algorithm

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

如果更多重复键,快速排序算法改进

我正在阅读Robert Sedwick算法和数据结构第1-4部分中的快速排序算法.

template <class item>

static void quicksort(item [] a, int l, int r)
{
    if(r <= l) return;
    int i = partition(a,l,r);
    quicksort(a, l, i-1);
    quicksort(a, i+1, r);
}

template <class item>
int partition(item a[], int l, int r)
{
    int i = l-1; j = r; item v = a[r];

    for(;;) {
        while( a[++i] < v );
        while( v < a[--j] ) 
            if( j == l ) 
                break;
        if( i >= j) 
            break;  // pointer crossing.
        exch(a[i], a[j]); …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm quicksort

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

算法分析

我正在阅读算法分析主题.这是本书的文本片段

当n加倍时,线性程序的运行时间增加2倍,二次程序的运行时间增加4,立方程序的运行时间增加8.当n加倍时,以对数时间运行的程序只需要一个加性常数,而在O(n log n)中运行的程序在相同的情况下运行的时间略长两倍.

如果低阶项具有相对大的系数且n不够大,则很难发现这些增加.

我的问题是作者的意思是低阶项具有相对较大的系数?任何人都可以用例子来解释

谢谢!

algorithm

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

有序和无序(有根)树之间的差异

我正在阅读Robert Sedwick的算法.本书中的一些定义如下所示.

树(也是有序树)是连接到一系列不相交树的节点(称为根).这样的序列称为森林.

根树(或无序树)是连接到多个有根树的节点(称为根).(这种多重集合称为无序森林.

我对上述文字的疑问是

  1. 我在理解上述定义方面有困难.任何人都可以用例子来解释.
  2. 作者对不相交的树的意思是什么?
  3. 作者对多重植根树的意思是什么?

谢谢你的时间和帮助

algorithm tree

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

使用二进制搜索查找缺失的数字

我正在读珍珠编程的书.

问题:给定一个顺序文件,其中包含最多40个随机顺序的32位整数,找到一个不在文件中的32位整数(并且必须至少有一个丢失).如果我们有几百字节的主内存和几个顺序文件,就必须解决这个问题.

解决方案:要将其设置为二进制搜索,我们必须定义范围,范围内元素的表示,以及确定范围的哪一半保存缺失整数的探测方法.我们如何做到这一点?

我们将使用已知包含至少一个缺失元素的整数序列作为范围,我们将通过包含其中所有整数的文件来表示范围.我们可以通过计算其中点上方和下方的元素来探测范围:上限或下限范围总共有半个元素.因为总范围缺少元素,所以较小的一半也必须具有mising元素.对于上述问题,这些是二进制搜索算法的大多数成分.

上面的文字是Jon Bently从编程珍珠书的版权.

以下链接提供了一些信息

"编程珍珠"二进制搜索帮助

我们如何使用二分搜索进行搜索,也没有按照上面链接中给出的示例进行搜索?请帮助我理解逻辑只有5个整数而不是百万个整数来理解逻辑.

c++ algorithm binary-search

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

在C++中将派生类指针分配给基类指针

我有以下

class base
{
};

class derived : public base
{
  public:
   derived() {}
   void myFunc() { cout << "My derived function" << std::endl; }

};
Run Code Online (Sandbox Code Playgroud)

我现在有

base* pbase = new derived();
  pbase->myFunc();
Run Code Online (Sandbox Code Playgroud)

我收到错误 myFunc 不是 base 的成员函数。

如何避免这种情况?以及如何让 myFunc 被调用?

注意我应该让基类不包含任何功能,因为它是设计的一部分,上面的代码是大功能的一部分

c++

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

关于包含带有警卫的头文件

我正在读一本关于Applied C++的书.

包含防护将阻止在编译源文件期间多次包含头文件.您的符号名称应该是唯一的,我们建议您根据文件名选择名称.例如,我们的文件cache.h包含这个包含保护.

#ifndef _cache_h_
 #define _cache_h_
 ...
 #endif // _cache_h_
Run Code Online (Sandbox Code Playgroud)

Lakos描述了使用冗余包含警卫来加速编译.见[Lakos96].对于大型项目,打开每个文件需要花费时间,但却发现已经定义了包含保护符号(即,文件已经包含在内).编译时间的影响可能是戏剧性的,当只使用标准的包含防护时,Lakos显示编译时间可能增加20倍.

[Lakos96]:LargeScale C++软件设计.

我没有Lakos96参考书来引用概念,所以在这里寻求帮助.

我对上述文字的疑问是

  1. 作者的意思是"对于大型项目,打开每个文件需要花费时间,但却发现已经定义了包含保护符号"?

  2. 作者的意思是"当标准包括使用警卫时"?

谢谢你的时间和帮助.

c++

6
推荐指数
3
解决办法
2367
查看次数