我找不到任何可以给出明确答案的东西.我只是好奇,如果std :: vector只在绝对必须时重新分配它的内部数组,或者它会在预期中提前重新分配(可以这么说).
例如:
std::vector<int> myVector;
for (int i = 0; i < 1000; ++i) myVector.push_back(i);
cout << myVector.size() << '\n' // Gives 1000 as expected
<< myVector.capacity() << endl; // Gives 1024 which makes sense
Run Code Online (Sandbox Code Playgroud)
如果我继续添加元素,是否有可能我添加的下24个项目中的一个会改变容量,或者只有在我放入第25个项目后它才会重新分配?
注意:
我在Linux下使用gcc 4.4.3进行了测试,但似乎重新分配是"按需"完成的,但我很好奇我是不是很幸运,或者有什么东西说明这是预期的行为.
我正在尝试使用一些固定字段来获取不安全结构的字段类型.固定字段FieldType不返回实际类型.
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct MyStruct
{
public UInt32 Field1;
public fixed sbyte Field2[10];
public UInt64 Field3;
}
void Test()
{
var theStruct = new MyStruct();
string output = "";
foreach (FieldInfo fi in theStruct.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance))
{
output += fi.Name + ": " + fi.FieldType.ToString() + "\r\n";
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
字段1: System.UInt32
字段2: TestProjectNS.MyStruct+<Field2>e__FixedBuffer0
字段3: System.UInt64
我正在寻找Field2告诉我它sbyte而不是TestProjectNS.MyStruct+<Field2>e__FixedBuffer0
C#是否具有Java的java.lang.RuntimeException等价物?
(IE是一个异常,可以在不必被捕获的情况下抛出,或者在抛出异常时程序崩溃.)
是否存在Ajax.BeginForm在Asp.net MVC 3中使用的教程或代码示例,其中存在不显眼的验证和Ajax?
对于MVC 3来说,这是一个难以捉摸的话题,我似乎无法让我的表单正常工作.它将执行Ajax提交但忽略验证错误.
我似乎无法在Firefox的HTML5画布中获取onMouseWheel事件.以下代码段在Chrome和IE9中按预期工作,但在Firefox中我只收到click事件:
<!DOCTYPE html>
<html>
<body>
<canvas id="TestCanvas" tabindex="2" onmousewheel="window.alert('wheel!')" onclick="window.alert('click!')" style="width:90%;height:90%;margin-left:auto;margin-right:auto border:1px solid green;"></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
根据我见过的规范,onMouseWheel应该是HTML5元素的标准事件.难道我做错了什么?
我有一个FirstViewController是我的根导航控制器.我有一个撰写按钮,我想在点击时以模态方式显示TTMessage Composer .这很好用.
问题是没有导航栏来取消作曲家,所以我必须添加一个.
这是如何在没有导航栏的情况下通过仅以模态方式呈现消息编写器(TTMessageController).
在显示消息控制器之前,您必须创建一个导航控制器,将消息控制器推到其上,然后以模态方式显示导航控制器.
这似乎是我的问题的解决方案,但我不明白.任何人都可以用一点代码来解释它吗?我现在从对象面板导航控制器,我可以将它拖到我的nib文件上,但在这种情况下它是什么意思?什么意思是"推"?
我正在使用AVFoundation api来创建相机预览视图,我在完成后无法清理.
我发现这个问题的最佳答案是在这个SO线程中,谢谢Codo.
但是,他没有解决AVCaptureVideoPreviewLayer的重新分配问题,而这正是我遇到麻烦的地方.
在我的视图控制器类中,我在startCameraCapture方法中有一些初始化代码.听Codo的回答,我正在使用dispatch_set_finalizer_f(_captureQueue, capture_cleanup);注册队列真正关闭时调用的回调.我也保留自己,以确保在调用我的对象完成队列之前我的对象不会消失.然后我使用capture_cleanup回调来释放self.
-(void) startCameraCapture {
_camSession = [[AVCaptureSession alloc] init];
if (_previewLayer == nil) {
_previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:_camSession];
}
_previewLayer.frame = self.compView.bgView.frame;
[self.compView.bgView.layer addSublayer:_previewLayer];
// Get the default camera device
AVCaptureDevice* camera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// Create a AVCaptureInput with the camera device
NSError *error=nil;
AVCaptureInput* cameraInput = [[AVCaptureDeviceInput alloc] initWithDevice:camera error:&error];
if (cameraInput == nil) {
NSLog(@"Error to create camera capture:%@",error);
}
AVCaptureVideoDataOutput* videoOutput = [[[AVCaptureVideoDataOutput alloc] init] autorelease];
// …Run Code Online (Sandbox Code Playgroud) 在Java中,您可以使用NavigableMap,它允许您执行诸如"查找小于或等于给定值的最大键"(floorKey方法)等有用的内容.因此,如果myMap包含{1 - >"One",2 - >"Two",3 - >"Three",7 - >"Seven"},您可以调用myMap.floorKey(6)并返回键3.
在C++中,STL提供了一个map类,默认情况下会根据升序键值顺序对条目进行排序.这很好,但是如何在C++中执行类似于floorKey的操作呢?到目前为止我发现的所有引用都建议你必须手动完成(即定义一个迭代器,收敛于密钥 - 最好使用二进制搜索,然后找到下一个下键).有没有广泛可用的库函数可以做到这一点?
我似乎无法找到用于计算3D中4个顶点平面的法线的等式.给定4个顶点,(x1,y1,z1),(x2,y2,z2)等.如何计算它们创建的曲面的法线?我理解它如何使用三角形函数,但我不知道如何使它适应4个顶点