小编Rav*_*erg的帖子

C++中的转换运算符

请帮助我理解C++中转换运算符的确切运作方式.我在这里有一个简单的例子,我试图理解,虽然目前还不是很清楚编译器实际上是如何进行转换的.

class Example{
public:
    Example();
    Example(int val);
    operator unsigned int();
    ~Example(){}
private:
    int itsVal;
};

Example::Example():itsVal(0){}

Example::Example(int val):itsVal(val){}

Example::operator unsigned int (){
    return (itsVal);
}

int main(){
    int theInt = 5;
    Example exObject = theInt; // here 
    Example ctr(5);
    int theInt1 = ctr; // here
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ conversion-operator

28
推荐指数
3
解决办法
5万
查看次数

Bind a char to an enum type

I have a piece of code pretty similar to this:

class someclass
{
public:
enum Section{START,MID,END};
vector<Section> Full;
void ex(){
    for(int i=0;i<Full.size();i++)
    {
        switch (Full[i])
        {
        case START :
                  cout<<"S";
                  break;
        case MID :
                  cout<<"M";
                  break;
        case END:
            cout<<"E";
            break;
        }
    }
    }
};
Run Code Online (Sandbox Code Playgroud)

Now imagine I have much more enum types and their names are longer.... well what i get is not a very good looking code and i was wondering if it possible to bind a specific char …

c++ enums coding-style char

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

Java:HashSet与HashMap

我有一个程序处理大量数据集.由于程序一直在寻找容器中的对象,因此最好将对象存储在散列实现的容器中.

第一个想法是使用HashMap,因为获取和删除此容器的方法更适合我需要的用途.

但是,我开始看到HashMap的使用是相当大的内存消耗品,这是一个主要问题,所以我认为切换到HashSet会更好,因为它只使用<E>,而不是<K,V>每个元素,但是当我看到实现我学会了它使用底层的HashMap!这意味着它不会节省任何记忆!

所以这是我的问题:

  • 我所有的假设都是真的吗?
  • HashMap内存是否浪费?更具体地说,每个条目的开销是多少?
  • HashSet和HashMap一样浪费吗?
  • 是否有任何其他基于Hash的容器将显着减少内存耗材?

    更新

根据评论的要求,我将对我的程序进行一些扩展,hashMap意味着保存一对其他对象,以及一些数值 - 从它们计算的浮点数.一路上,它提取了一些并进入新的对.给定一对,它需要确保它不会保持这对或删除它.可以使用float值或hashCodepair对象完成映射.

另外,当我说"庞大的数据集"时,我说的是~4*10 ^ 9个对象

java hash memory-management hashmap hashset

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

SIGUSR1和SIGUSR2之间的区别

读取信号的手稿,我遇到了信号表,看到有两个定义的信号,用于使用SIGUSR1和SIGUSR2.这两者有什么区别吗?如果是这样,我何时应该选择使用另一个?如果没有差异,为什么两个信号服务于同一目的?

c unix signals

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

RxJS 缓存并使用 shareReplay 刷新

我正在对从 API 检索的某些数据使用缓存,出于逻辑原因,存储的数据仅在有限的时间内有效,因此我正在使用以下内容:

someApiData$ = this.getData()
    .pipe(shareReplay(1, 3000))
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很明显但对shareReplay操作符的创建者显然不是的是,如果数据不再缓存,则应该重新获取,或者至少我应该有另一个参数可以给我这个选项,就像是:

someApiData$ = this.getData()
    .pipe(shareReplay(1, 3000, shouldRefresh))
Run Code Online (Sandbox Code Playgroud)

相反,下一个订阅者将获得空值。所以,我正在寻找一个优雅的解决方案来解决这个问题。

rxjs angular rxjs-pipeable-operators

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

积极地调用析构函数

在这篇文章中:

C++指针:更改内容而不更改地址?

用户Eric Postpischil提出了一个答案,他主动调用了类的析构函数.这合法吗?它被认为是好的编程吗?

我问的原因是,在我的一个课程中,我的老师说这是禁止的,我们不应该这样做,他错了吗?

帖子上的问题和答案本身虽然有趣,但与我的问题并不相关.

c++ destructor

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

Unix:如何计算目录中所有文件中包含字符串的所有行,并分别查看每个文件的输出

在UNIX中,我可以执行以下操作:

grep -o 'string' myFile.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

它将计算包含字符串的myFile.txt中的行数.或者我可以使用:

grep -o 'string' *.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

这将计算包含该字符串的文件夹中所有.txt扩展名文件中的行数.我正在寻找一种方法来对文件夹中的所有文件进行计数,但是要查看每个文件的输出分隔,例如:

myFile.txt 10000

myFile2.txt 20000

myFile3.txt 30000

我希望我已经清楚了,如果没有,你可以在输出中看到一个有点接近的例子:

wc -l *.txt
Run Code Online (Sandbox Code Playgroud)

unix grep wc

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

WCF合同继承合同

我正在使用WCF对应用程序进行原型设计,并且我正在尝试使用从另一个接口派生的接口来定义回调契约.这样做时,生成的代理代码(使用svcutil.exe)看不到基接口,并且在尝试调用基接口中定义的方法时,服务器上会抛出"NotSupportedException".

我还尝试在代理类中手动定义基接口,以便能够在客户端实现方法 - >相同的行为.

有谁知道为什么它不起作用?

感谢您的帮助,并对转发感到抱歉!

这是我的合同定义:

namespace wcfContract
{

    [ServiceContract(Namespace = "Test")]
    public interface IPing
    {
        [OperationContract]
        void Ping();
    }

    public interface ITestCallback : IPing      
    //<-------------- IPing method not seen  at all in proxy
    {
        [OperationContract]
        void TestCB();
    }

    [ServiceContract(Namespace = "Test", CallbackContract =
        typeof(ITestCallback))]
    public interface ITest : IPing
    {
        [OperationContract]
        void Test();
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# wcf

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

当值不为null时,无法将值null插入列中

在我的c#代码中,我有一个插入到我的数据库中,但它抛出异常

无法将值NULL插入列'BoxID',表'Moroccanoil_Replicated.dbo.Boxes'; 列不允许空值.INSERT失败.

然而,当调试这段代码时,我看到该框实际上不是null,当我在我的SQL SM中测试相同的精确插入时更进一步它工作得很好.

编辑:

出于某种原因,这是根据探查器实际执行的查询:

exec sp_executesql 
  N'INSERT [dbo].[Boxes]([MasterBoxID], [DateTime], [Reported], [StationID])
  VALUES (NULL, @0, @1, @2)
  SELECT [BoxID]
  FROM [dbo].[Boxes]
  WHERE @@ROWCOUNT > 0 AND [BoxID] = scope_identity()',
  N'@0 datetime2(7),@1 bit,@2 int',@0='2015-11-30 13:37:46.4714394',@1=0,@2=7
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这个以及如何解决它?

更多相关信息:

  • db.SaveChanges()调用发生异常,而不是插入.
  • BoxID未定义为标识.

以下是调试模式中带有插入值的代码: 在此输入图像描述

SQL中的相同插入工作正常: 在此输入图像描述

c# sql-server entity-framework

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

如何使用带垂直条的语句批处理文件?

我试图找出一个OS是32位还是64位使用批处理文件,然后根据输出运行程序.这是我到目前为止所拥有的

if (systeminfo | findstr = based) == "x64-based PC" run 64-bit Program
else run 32-bit program 
Run Code Online (Sandbox Code Playgroud)

我不断得到"|此时出乎意料".我试过使用帽子^而没有括号但我似乎无法通过该错误.是否有我缺少的东西或其他方式来做到这一点.批处理文件和程序将在闪存驱动器上,并在多个Windows PC上使用.systeminfo命令是我所知道的唯一获取我需要的结果的方法,我知道该命令有效,但我需要该程序来查看结果并做出决定.任何想法将不胜感激!提前致谢

command if-statement batch-file

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

数组运算符[]重载const和非const版本

我得到了一个实现模板数组类的任务.其中一个要求是重载[]运算符.我制作了这两个const和非const版本,似乎工作正常.

const T& operator[](const unsigned int index)const
Run Code Online (Sandbox Code Playgroud)

T& operator[](const unsigned int index)
Run Code Online (Sandbox Code Playgroud)

我的问题是当我做类似的事情时,编译器将如何知道运行哪一个:

int i=arr[1]
Run Code Online (Sandbox Code Playgroud)

在非const数组?

c++ const operator-overloading

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