小编ami*_*far的帖子

STL向量:移动向量的所有元素

我有两个STL向量A,B并且我想清除所有元素A并将所有元素移动BA然后清除B.简单地说,我想这样做:

std::vector<MyClass> A;
std::vector<MyClass> B;
....
A = B;
B.clear();
Run Code Online (Sandbox Code Playgroud)

因为B可能很长,所以需要k*O(N)执行此操作,其中k是常量,并且Nmax(size_of(A), size_of(B)).我想知道是否有更有效的方法可以做到这一点.我能想到的一件事是定义AB作为指针,然后在恒定时间内复制指针并清除B.

c++ stl stdvector

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

将数组传递给Perl中的函数

我想我误解了传递给Perl函数的参数的某些方面.func(\@array)和之间有什么区别func(@array)

AFAIK,在两个函数中,参数都通过引用传递,在这两个函数中我们可以更改@array主程序中的元素.那有什么区别?我们应该何时使用哪个?

@array = (1,2,3);
func(@array);
func(\@array);

sub func {
    ...
}
Run Code Online (Sandbox Code Playgroud)

另外,我如何模仿Perl中的pass-by-value?是用@_唯一的方法?

perl function parameter-passing

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

如何在Linux中刷新地址空间区域的CPU缓存?

我感兴趣的是仅针对地址空间区域刷新缓存(L1,L2和L3),例如从地址A到地址B的所有缓存条目.在Linux中是否存在从用户或内核空间执行此操作的机制?

c linux x86 arm linux-kernel

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

ARM Cortex处理器中的L1缓存端口

我做了一些研究,但找不到太多信息.

我想知道ARM嵌入式处理器有多少L1读取和L1写入端口以及端口有多宽.具体来说,我对Cortex-A8,Cortex-A9和Cortext-A15感兴趣.

我的盲目猜测是Cortex-A9处理器有一个L1读端口和一个L1写端口,宽64位.我的另一个猜测是它有一个共享的读/写端口.有什么想法吗?

arm cpu-cache cortex-a amba

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

如何在C中获取动态分配的二维数组的长度

问题是如何在C中获得动态分配的2D数组的长度?我认为下面的代码应该获得行数,但事实并非如此.

char** lines;
/* memory allocation and data manipulation */

int length; //the number of rows

length = sizeof(lines)/sizeof(char*);
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

c size pointers multidimensional-array

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

如何在双击时突出显示vim中所有单词的出现次数

当我在Windows上时,我使用notepad ++,而在Linux上我使用vim.我真的很喜欢vim.但至少有一件事我发现在记事本++中真的很有趣.您可以双击一个单词,它会自动突出显示该单词的所有出现.我想知道我是否可以用vim做那样的事情?所以问题是当你双击vim中的单词时如何突出显示单词的所有出现.

显然,我不想搜索那个单词,或者改变我的光标位置,只是突出显示.我:set hlsearch也在.

可能你可能想在vim中避免鼠标,但我在这里做了一个例外:).

我知道*同样的工作,但鼠标怎么样?

vim highlighting

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

c ++:函数左值或右值

我刚开始通过阅读本页来了解c ++ 11中的右值引用,但我陷入了第一页.这是我从该页面获取的代码.

  int& foo();
  foo() = 42; // ok, foo() is an lvalue
  int* p1 = &foo(); // ok, foo() is an lvalue

  int foobar();
  j = foobar(); // ok, foobar() is an rvalue
  int* p2 = &foobar(); // error, cannot take the address of an rvalue
Run Code Online (Sandbox Code Playgroud)
  1. 为什么是foo()左值?是因为foo()回报int&基本上是一个左值?
  2. 为什么是foobar()左值?是因为foobar()回归int
  3. 一般来说,为什么你会关心函数是否是右值?我想如果我读完那篇文章的其余部分,我会得到答案.

c++ rvalue lvalue c++11

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

由ARM Cortex-A9构成的SoC的典型L1和L2访问延迟

我正在寻找由ARM Cortex-A9处理器(如具有多个ARM A9处理器的Nvidia Tegra 2和Tegra 3)制造的SoC的L1访问延迟和L2访问延迟.

我可以找到一些关于这些架构的L1和L2大小的信息,但我对L1和L2访问延迟的信息不多.我发现的唯一可靠信息是"在Tegra 3上L2缓存延迟比2缓存2个周期快,而L1缓存延迟没有改变."

这里提到Tegra 2上的L2具有25个周期的延迟,并且这里提到L1具有4个周期的延迟并且L2具有31到55个周期的延迟.这些参考文献都不是完全可靠的.我希望能找到有关Nvidia,TI和Qualcomm网站和技术文档的更多信息,但没有成功.

编辑:OMAP4460和OMAP4470等类似SoC的信息也很棒.

arm omap cpu-cache tegra

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

当条目被从 TLB 驱逐时更新页表

当条目从 TLB 中驱逐时,页表是否更新?如果是这样,为什么?页表中更新了哪些信息?我认为当被驱逐的页面干净时不需要更新页表。

类似地,在 TLB 中缓存(引入)页面时是否更新了页表?

operating-system cpu-architecture virtual-memory tlb page-tables

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

从编译器角度看超级块和超级块定义

对于编译器人员来说,这是一个非常简单的问题,但我总是对超级块和超级块感到困惑。我已经看到了超级块和超级块的定义,但我想从编译器人员的角度了解它们的定义。

我熟悉基本块、谓词执行和循环展开等概念,因此您可以跳过基本内容。

谢谢!

compiler-construction

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

使用Core Data插入和修改实体中的记录

我试图在互联网上找到我的问题的答案,但我不能.我在Core数据中有一个简单的实体,它具有Value属性(即整数)和Date属性.我想在我的.m文件中定义两个方法.

第一种方法是ADD方法.它有两个参数:整数值(由用户在UI中输入)和日期(默认为当前日期).然后根据参数将记录插入实体.

第二种方法就像增量方法.它使用Date作为键来查找记录,然后递增该记录的整数值.

我不知道如何编写这些方法.(假设我们在xib文件中有一个表控制器)

entity core-data insert record nsarraycontroller

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