小编bas*_*sil的帖子

C++ 11删除说明符与私有函数的使用

我正在篡改我的C++(例如,尝试进入更现代风格的编码)并且正在查看删除说明符.我的理解是,它用于确保无法定义或调用某些功能.如果我理解正确,这主要是在分配和复制的范围内.我不太确定使用删除说明符和将这些函数设为私有之间的区别.

例如,有什么区别:

 class Foo {
 private:
      Foo& operator(const Foo&);
      Foo(const Foo&);     
 };
Run Code Online (Sandbox Code Playgroud)

 class Bar {
 public:
      Bar& operator(const Bar&) = delete;
      Bar(const Bar&) = delete;
 };
Run Code Online (Sandbox Code Playgroud)

换句话说:使用删除说明符获得了什么?只是让事情看起来更好吗?

c++ c++11

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

保存程序状态(visual studio 2008)

我正在调试(在Visual Studio 2008中)我用C++编写的实用程序.将大量输入文件与我的慢速机器组合在一起可能需要花费6个多小时来达到我需要观察程序执行不正常的程度.

我可能在这里抓住吸管,但有人知道功能或插件或Visual Studio中的某些东西,我可以保存程序执行状态,以便我可以绕过所需的时间来获得我需要的位置吗?

c++ savestate visual-studio-2008 visual-studio

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

如何使用xpidl(header.py,typelib.py)

我正在编写一个XPCOM组件.我有我的idl文件,它非常简单,只包含以下内容:

#include "nsISupports.idl"

[scriptable, uuid(4ead-ba5c-49c9-beb2=64209c7699a)]
interface nsIPageSummary : nsISupports
{
    boolean saveSummary(in nsIDOMDocument document,
                        out unsigned long numLinks,
                        out unsigned long numImages);
};
Run Code Online (Sandbox Code Playgroud)

我下载了xulrunner sdk,并尝试通过以下命令从包含上述文件的目录(nsIPageSummary.idl)生成我的标头:

〜/ xulrunner-sdk/sdk/bin/header.py --cachedir =〜/ xulrunner-sdk/idl/-o nsIPageSummary.h nsIPageSummary.idl

运行时,我收到以下消息:

$ ~/xulrunner-sdk/sdk/bin/header.py --cachedir=~/xulrunner-sdk/idl -o nsIPageSummary.h nsIPageSummary.idl 
Traceback (most recent call last):
  File "~/xulrunner/xulrunner-sdk/sdk/bin/header.py", line 497, in <module>
    idl.resolve(options.incdirs, p)
  File "~/xulrunner/xulrunner-sdk/sdk/bin/xpidl.py", line 285, in resolve
    p.resolve(self)
  File "~/xulrunner-sdk/sdk/bin/xpidl.py", line 255, in resolve
    raise IDLError("File '%s' not found" % self.filename, self.location)
xpidl.IDLError: error: File 'nsISupports.idl' not found, nsIPageSummary.idl …
Run Code Online (Sandbox Code Playgroud)

xul xulrunner xpcom firefox-addon

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

计算虚拟内存页表和转换后备缓冲区

我正在回答一些与虚拟内存相关的问题,并希望在澄清或确认我对这些内容如何完成的理解方面提供一些帮助.

问题如下:

给定一个具有32位字的字节可寻址系统,4千兆字节的虚拟地址空间,1千兆字节的物理地址空间和4千字节的页面大小.假设页表条目向上舍入为4个字节.

a)页表的大小(以字节为单位)是多少?

b)现在假设实现了4路组关联转换后备缓冲器,总共256个地址转换.计算其标记和索引字段的大小.

我的答案如下:

A:

页表的大小等于页表中的条目数乘以条目的大小.

页表中的条目数等于内存大小除以页面大小:2 ^ 32/2 ^ 12 = 2 ^ 20.

条目的大小等于字大小减去用于页表中条目数的位:32-20 = 12.

因此,页表大小为:(2 ^ 20)*12位= 12582912位= 1572864字节

但是,我发现这个(在"页面大小"的标题下),它使用基本相同的数字.

页表大小=((虚拟地址空间大小)/(页面大小))*(页表条目大小)=(4 GB/4 KB)*4 B = 4 MB

哪个答案是对的?

接下来,B:

我不确定如何计算B部分.我相信标签是通过添加块数,加上偏移量加上索引来计算的.这是一个4路组关联,因此每组中有4个块.索引是8位,因为基本索引大小是10位并且减少2,这也是因为它是4路组关联.但是,我不知道如何计算偏移量,这是帮助计算标记所需的.

任何帮助将非常感激.

computer-science computer-architecture virtual-memory

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

给定代码的渐近分析

我得到了以下伪代码:

 j = 1
 while j < n:
      k = 2
      while k < n:
           k = k*k
      j++
Run Code Online (Sandbox Code Playgroud)

在我的想法中,这段伪代码将具有以下复杂性:

 O(n*log(n))
Run Code Online (Sandbox Code Playgroud)

由于外循环执行n次.虽然内循环基本上每次将增量步长分成两半.我的想法太远了吗?

编辑:1个以上(这些不是作业,我保证,只是要了解的例子)

 for i = 1 to n:
    for j = 1 to n:
       k = j*j
       while k < n:
          k++
Run Code Online (Sandbox Code Playgroud)

在这种情况下,最外面的循环将执行n次.中间回路也将执行n次,把我们现在以n 2倍.最里面的循环,正如我所说,它将执行log(n)次,将我们放在O(n 2*log(n))次.我的理解是否正确?

algorithm big-o computer-science asymptotic-complexity

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

在不知道密钥的情况下获取std :: map中的值类型

我有一个包含未知键和值类型的映射,我想在typeid(...).name()不事先知道键类型的情况下确定值类型:

 std::map<K, V> aMap;
 // This gives me the typeid(...).name(), but requires knowing the key type
 typeid(aMap[0]).name();
Run Code Online (Sandbox Code Playgroud)

有没有办法在不知道什么类型的情况下获得typeid(...).name()for ?VK

应该指出的是,我仅限于C++ 03; 但是,如果有可能在C++ 11或更高版本中执行此操作,那么知道它会很酷.

c++ reflection dictionary stdmap c++03

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

了解停顿和分支延迟槽

我正在学习计算机体系结构课程。我从另一所大学找到了这个网站,其中的笔记和视频迄今为止对我有帮助:CS6810,犹他大学。我正在完成该网站上发布的一些旧作业,特别是这个。我试图理解管道和相关概念,特别是停顿和分支延迟槽。

我现在正在看旧作业中的第一个问题,并且不确定如何做这些问题。

问题如下:

考虑以下代码段,其中 30% 的时间执行分支,70% 的时间不执行分支。

R1 = R2 + R3

R4 = R5 + R6

R7 = R8 + R9

如果 R10 = 0,则分支到 linex

R11 = R12 + R13

R14 = R11 + R15

R16 = R14 + R17

...

线性:R18 = R19 + R20

R21 = R18 + R22

R23 = R18 + R21

...

考虑一个 10 级有序处理器,其中指令在第一级中获取,并且分支结果在三个级后已知。估计以下场景下处理器的 CPI(假设处理器中的所有停顿都与分支相关,并且分支占所有执行指令的 15%):

  1. 在每个分支上,获取都会停止,直到知道分支结果为止。

  2. 每个分支都被预测为不被采用,并且如果该分支被采用,则误取的指令将被压缩。

  3. 处理器有两个延迟槽,分支后面的两条指令总是被取出并执行,并且

    3.1. 您无法找到任何说明来填充延迟槽。

    3.2. 您可以将分支之前的两条指令移至延迟槽中。

    3.3. 您可以将标签“linex”后的两条指令移至延迟槽中。

    3.4. 您可以在分支(在原始代码中)之后立即将一条(注意:一条,而不是两条!)指令移至延迟槽中。

我不确定如何开始看待这个问题。我已经阅读了所有笔记并观看了该网站上的视频,并阅读了 …

cpu-architecture pipelining branch-prediction

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

使用 tweepy 获取独特的推文

我正在尝试使用许多搜索词来获取推文语料库。我遇到的一个问题是它无法获得独特的推文。也就是转发。

有没有办法在不进行任何文本处理的情况下预先删除这些?

我现在有什么:

 api=tweepy.API(auth)
 for search in hashtags:
     for tweet in  tweepy.Cursor(api.search,q=search,count=1000,lang="en").items(): 
         text=repr(tweet.text.encode("utf-8"))  
         out.write(text+"\n")
Run Code Online (Sandbox Code Playgroud)

python twitter tweepy

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

使用命令行和正则表达式来确定开始句子的单词

我有文字:

 This is a test. This is only a test! If there were an emergency, then Information would be provided for you.
Run Code Online (Sandbox Code Playgroud)

我希望能够确定哪些单词开始句子.我现在拥有的是:

 $ cat <FILE> | perl -pe 's/[\s.?!]/\n/g;'
Run Code Online (Sandbox Code Playgroud)

这只是摆脱标点符号并用换行符替换它们,给我:

 This 
 is 
 a 
 test 

 This
 is
 only
 a
 test

 If
 there
 were
 an
 emergency,
 then
 Information
 would
 be
 provided
 for
 you
Run Code Online (Sandbox Code Playgroud)

从这里我可以以某种方式提取没有任何东西(文件的开头)或空白的单词,但我不确定如何做到这一点.

regex perl grep

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

BASH if语句中的函数返回值

我已经在BASH if-then语句中查看了句柄函数返回值的各种方法,但似乎都没有.这就是我所拥有的

 function is_cloned()
 {
      if [ -d $DIR_NAME ]
      then
           return $SUCCESS
      fi
      return $FAILURE
 }
Run Code Online (Sandbox Code Playgroud)

如果我自己调用它并检查返回值,它将起作用:

 is_cloned
 retval=$?
 if [ $retval -eq $FAILURE ] 
 then
      ...
 fi
Run Code Online (Sandbox Code Playgroud)

如何在if语句中使用函数调用?或者根本没有办法利用返回值?

linux bash shell sh

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