小编Cor*_*ein的帖子

什么时候深层复制发生在QList上?

在我正在上课的课程中,我正在玩几个人QList.我听说Qt试图尽可能不制作列表的深层副本.据我所知,这意味着当你这样做时不会发生深层复制:

QList<int> myList;
myList << 1 << 2 << 3 << 4;
QList<int> otherList = myList;  // No deep copy
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我需要确保永远不会发生深层复制QList.我需要确保避免什么样的操作或操作才能确保QList我正在使用的深层拷贝永远不会发生?

c++ qt qlist

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

编译时为什么这个琐碎的程序如此之大?

我创建了一个包含以下行的文件:

int main() { return 0; }
Run Code Online (Sandbox Code Playgroud)

编译完之后,我惊讶地发现这个简单程序的二进制文件是8328字节!这里发生了什么,这个8328字节的二进制文件在世界上是什么?当然,这个程序可以用几行程序表示.

注意:我用以下行编译了这个:

g++ main.cpp
Run Code Online (Sandbox Code Playgroud)

我的g ++版本是 g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

c++ ubuntu compilation

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

为什么这个bash expr命令不起作用?

我试图在bash脚本中增加一个变量,但它无法正常工作.这是我的代码:

#! /bin/bash

COUNTER=0
while [ $COUNTER -lt 5 ]
do
    echo "i will add this line to file mycreation">>./myfile
    COUNTER = `expr $COUNTER + 1`
done
Run Code Online (Sandbox Code Playgroud)

COUNTER作业周围的引号是反引号.

我试图取代COUNTER$COUNTER这样的:

$COUNTER = `expr $COUNTER + 1`
Run Code Online (Sandbox Code Playgroud)

但这并没有解决问题,并给了我以下错误:

line7: 0: command not found. 
Run Code Online (Sandbox Code Playgroud)

linux bash shell fedora

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

使用git,如何将一些未提交的更改从一个分支移动到另一个文件夹中的另一个分支?

我每天都在使用相同软件的两个不同分支.但是,每次我签出另一个分支时,我的构建过程可能需要一个小时.为了解决这个问题,我刚刚在两个单独的文件夹中为每个分支检查了一次项目.

我在一个分支中做了一些工作,并在提交之前意识到我在错误的文件夹中,因此错误的分支.如何将我在此分支上所做的工作移动到另一个分支,最好不要创建提交(如果可能的话)?

git

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

打开分割时,如何让vim在路径中查找或搜索文件?

在vim中,我可以找到一个文件并在新的选项卡中打开它:tabfind,然后我可以使用:split或打开一个我知道新分区位置的文件:vsplit.但是,我希望vim在运行:split:vsplit命令时在我的路径中为我查找文件.例如,在我当前的目录中,我有这些文件(所有这些都在我的路径中):

./ReallyLongFileName1.txt
./fooDir/ReallyLongFileName2.txt
./barDir/bazDir/ReallyLongFileName3.txt
Run Code Online (Sandbox Code Playgroud)

我想在vim中输入以下命令:

:vsplit R<Tab>
Run Code Online (Sandbox Code Playgroud)

并在我的路径中搜索与该表达式匹配的所有文件,并填充其余部分

:vsplit ReallyLongFileName
Run Code Online (Sandbox Code Playgroud)

这与:find或完美配合:tabfind,但在拆分时不起作用.是否有一个命令执行此操作,我只是不知道,或者有没有办法将这个功能添加到:split:vsplit命令?

vim

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

你可以使用Qt foreach循环迭代每个可能的枚举值吗?

鉴于枚举:

enum AnEnum { Foo, Bar, Bash, Baz };
Run Code Online (Sandbox Code Playgroud)

你能用Qt的foreach循环迭代这些枚举吗?

这段代码没有编译(不是我预期的......)

foreach(AnEnum enum, AnEnum)
{
// do nothing
}
Run Code Online (Sandbox Code Playgroud)

c++ foreach enums qt

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

Q_ASSERT发布构建语义

在发布版本下,我无法找到关于Q_ASSERT语义的明确声明.如果没有断言检查,那么断言的表达式是否被评估?

请考虑以下代码

Q_ASSERT(do_something_report_false_if_failed());
Run Code Online (Sandbox Code Playgroud)

do_something_report_false_if_failed()在所有潜在的Qt构建配置下运行?相反,它会更安全(即使更冗长,更不易读):

bool is_ok = do_something_report_false_if_failed();
Q_ASSERT(is_ok)
Run Code Online (Sandbox Code Playgroud)

后一种方法的缺点是ASSERT故障不那么冗长,但是可能更清楚地表明该语句是执行的?

c++ qt assertions

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

"代理豆"是什么意思?

在工作和在线,我一直听到关于企业Java开发的术语"代理".例如,metrics-spring使用以下短语:

该模块执行以下操作:

创建指标和代理bean,其中包含使用@Timed,@ Metered,@ ExceptionMetered和@Counted注释的方法[强调我的]

我不熟悉Java生态系统框架和库中的许多语言.我觉得我对bean内容有很好的理解,但我还不清楚如何代理bean.

代理bean意味着什么?

java proxy spring

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

最后相当于Scala Try

def doWork() = {
  getLock()
  Try(useResource) match {
    case Success(result) => releaseLock(); result
    case Failure(e: Exception) => releaseLock(); throw e
  }
}
Run Code Online (Sandbox Code Playgroud)

当我退出时,我正在努力确保锁定被释放doWork.但是作为该方法的一部分,我可能会抛出一个异常,所以我不能在最后释放锁doWork.

releaseLock()重复两次,看起来有点代码味道.我可以通过使用传统的Java风格的try/catch/finally来减少它:

def doWork() = {
  getLock()
  try {
    useResource
  } catch {
    case e: Exception => throw e
  } finally {
    releaseLock()
  }
}
Run Code Online (Sandbox Code Playgroud)

Try如果可能的话,我更喜欢使用Scala .

有没有办法在框架内执行"最终"逻辑Try

scala

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

用于切换窗格中的选项卡的键盘快捷键

当我专注于我的调试面板时:

在此输入图像描述

我想使用键盘切换到"控制台"选项卡,该选项卡位于当前所选"调试器"选项卡旁边.

有几个Keymap设置引用切换编辑器选项卡,但这不是代码编辑器窗口,而是IntelliJ特定窗格.如何指定用于在IntelliJ窗格中导航选项卡的键盘快捷键?

keyboard-shortcuts intellij-idea

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