我知道c ++中的以下情况,其中将调用复制构造函数:
当为现有对象分配其自己的类的对象时
MyClass A,B;
A = new MyClass();
B=A; //copy constructor called
Run Code Online (Sandbox Code Playgroud)如果函数接收作为参数,按值传递,则为类的对象
void foo(MyClass a);
foo(a); //copy constructor invoked
Run Code Online (Sandbox Code Playgroud)当函数返回(按值)类的对象时
MyClass foo ()
{
MyClass temp;
....
return temp; //copy constructor called
}
Run Code Online (Sandbox Code Playgroud)请随时纠正我所犯的任何错误; 但是如果有任何其他情况需要调用复制构造函数,我会更好奇.
我遇到了一个有趣的问题:你如何计算11的表示中的1位数到N的幂,0<N<=1000.
设d是1位数
N = 2 11 ^ 2 = 121 d = 2
N = 3 11 ^ 3 = 1331 d = 2
最差时间复杂度预期为O(N ^ 2)
你计算数字和计算我得到最后一位数并除以10的1位数的简单方法不能很好地工作.11 ^ 1000甚至在任何标准数据类型中都不可重复.
有任何想法吗?
我正在尝试创建一个python脚本来处理基本的VM操作,例如:创建VM,删除VM,启动,停止等.
目前我很"坚持" create
从命令行,您将执行以下操作:
qemu-img create -f qcow2 vdisk.img <size>
virt-install --virt-type kvm --name testVM --ram 1024
--cdrom=ubuntu.iso --disk /path/to/virtual/drive,size=10,format=qcow2
--network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--os-type=linux
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的VM,testVM并在之前定义的上安装它vdisk.img
但我想在python中完成所有这些; 我知道如何处理第二部分:
打开libvirt连接并使用连接处理程序创建VM
但我想知道第一部分,你必须创建虚拟磁盘.
有没有libvirt API calls可以使用的?
或者,你必须在系统调用qemu-img create来创建虚拟磁盘?
我最近遇到了一个有趣的问题:
给定两个间隔列表,找到两个列表中的重叠间隔总数.
Example
L1: ([1,2][2,3][4,5][6,7])
L2: ([1,5][2,3][4,7][5,7])
[1,5] overlaps [1,2] [2,3] [4,5]
[2,3] overlaps [1,2] [2,3]
[4,7] overlaps [4,5] [6,7]
[5,7] overlaps [4,5] [6,7]
total = 3+2+2+2 = 9
Run Code Online (Sandbox Code Playgroud)
显然蛮力方法有效,但它太慢了(我需要比O(n ^ 2)更好的东西).
我也喜欢这里的类似问题.但它并不完全一样......
任何帮助表示赞赏
c ++中的new运算符有很多面孔,但我对新的贴片感兴趣.
假设您在特定内存位置分配内存
int memoryPool[poolSize*sizeof(int)];
int* p = new (mem) int; //allocates memory inside the memoryPool buffer
delete p; //segmentation fault
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何正确释放内存?如果不使用内置类型int,我会使用一些名为myClass的类?
myClass memoryPool[poolSize*sizeof(myClass )];
myClass * p = new (mem) myClass ; //allocates memory inside the memoryPool buffer
delete p; //segmentation fault
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
c++ memory-management new-operator dynamic-memory-allocation
作为筛选面试的一部分,我得到了以下问题:
编写一个函数,接收三角形边长的三个整数输入,并返回四个值之一,以确定三角形类型(1 =斜角,2 =等腰,3 =等边,4 =误差).假设另一个开发人员编写了该函数,为该函数生成测试用例.
我的回答是:
#define ERROR 4
#define EQUILATERAL 3
#define ISOSCELES 2
#define SCALENE 1
int detemineTriangle(int x, int y, int z)
{
if((x<=0) || (y<=0) || (z<=0))
return ERROR;
if((x==y) || (x==z) || (y==z))
{
if((x==y) && (y==z))
return EQUILATERAL;
else
return ISOSCELES;
}
return SCALENE;
}
Run Code Online (Sandbox Code Playgroud)
测试用例:
detemineTriangle (0,0,0); //error
detemineTriangle (2,2,2); //equilateral
detemineTriangle (3,3,1); //isosceles
detemineTriangle (1,3,3); //isosceles
detemineTriangle (3,1,3); //isosceles
detemineTriangle (1,2,3); //scalene
detemineTriangle (-1,2,3); //error scalene
detemineTriangle (1,-2,3); //error scalene
detemineTriangle …Run Code Online (Sandbox Code Playgroud) 我有一个无符号的16位数,a,我需要得到~a的值.简单地取〜的值是行不通的(对于a = 10,我需要~a = 5,而不是~a = 7FF5).我能想到的最好的是:
int negate(int a)
{
int mask1 = 0x4000;
int mask2 = 0x7FFF;
for (int i=0;i<15;i++)
{
if (!(a&mask1))
{
mask1>>=1;
mask2>>=1;
}
else
break;
}
int t = (0x7FFF - ~a) & mask2;
return t;
}
Run Code Online (Sandbox Code Playgroud)
这个问题是它太慢了; 你知道更快的方法来获得我需要的结果吗?
谢谢你的帮助
c++ ×5
algorithm ×2
c ×2
constructor ×1
hypervisor ×1
kvm ×1
libvirt ×1
new-operator ×1
optimization ×1
python ×1
testing ×1
visual-c++ ×1