我正在使用devenv/Rebuild,但是没有输出写入控制台.这很烦人,因为我想跟踪进度.
如果我使用/ out log.txt然后它写入"log.txt",当然,我可以在构建后检查.
也许有一些符号foo代表控制台所以我可以写/输出foo?
假设我有一张地图
std::map<int, double> foo;
是否foo[2] += 3.0;
定义了我写作的行为?也就是说,0.0
在我的情况下,是否有任何隐式添加的地图元素自动初始化(希望如此)?
如果没有,我是否引入了卡车装载的未定义行为?如果是这样,我可以用分配器做一些时髦的事情来强制执行初始化0.0
吗?
我有一个类foo
,其成员bar
类型std::shared_ptr<int>
:
class foo
{
std::shared_ptr<int> bar;
/*other stuff here*/
};
Run Code Online (Sandbox Code Playgroud)
在I类要分配new int
给bar
.但我不能写,bar = new int();
因为指针没有公共赋值运算符.
如何应该我做这个?我可以std::move
或者std::swap
但这些都不对.
我的片段:
auto i = -2147483648;
int j = 3;
std::swap(i, j); // Compile error about mismatched types here.
Run Code Online (Sandbox Code Playgroud)
编译器声明文字i
是a long long
.这是为什么?-2147483648适用于int
MSVC x64.
我的编译器是MSVC,目标是64位.
我有这门课
struct foo
{
explicit foo(const std::uint32_t& x, const std::uint32_t& y);
};
Run Code Online (Sandbox Code Playgroud)
和方法
int main()
{
std::int32_t x = -1;
std::int32_t y = -1;
foo f(x, y);
}
Run Code Online (Sandbox Code Playgroud)
在我的编译器(MSVC2012)上,它编译并运行值x
并y
包含在无符号类型中.我没想到这一点,但由于类型不匹配而期待编译错误.
我错过了什么?
我有一个foo
是std::vector<int>
.它表示一组范围的"边缘"值.
例如,如果foo
是{1,3,5,7,11},那么范围是1-3,3-5,5-7,7-11.对我而言,这相当于4个时期.请注意,每个句点包括范围中的第一个数字,而不是最后一个数字.所以在我的例子中,8出现在第3个(从零开始)的时期.7也出现在第3期.11以上不会出现在任何地方.2出现在第0期.
鉴于bar
哪个是int
,我使用
std::find_if(
foo.begin(),
foo.end(),
std::bind2nd(std::greater<int>(), bar)
) - foo().begin() - 1;
Run Code Online (Sandbox Code Playgroud)
给我应该包含的时期bar
.
我的问题:std::bind2nd
已被弃用,所以我应该重构.使用更新函数的等效语句是什么?std::bind
不会以明显的方式"堕入".
考虑以下try-with-resources块:
try (Foo foo = getAFoo()) {
}
Run Code Online (Sandbox Code Playgroud)
对于某些Foo
实现的类java.lang.AutoCloseable
.
如果getAFoo()
要返回null
,那么是否会在结束括号上抛出空指针异常(由于运行时试图调用close
)?
所以我在构造函数中查看了这个问题内存分配异常,我的老板在他的漂亮答案中说明析构函数不会被调用.
这让我想知道,
如果我要写
struct XBase
{
int* a;
char* b;
float* c;
XBase() : a(nullptr), b(nullptr), c(nullptr) {}
~XBase()
{
delete[] a; delete[] b; delete[] c;
}
};
Run Code Online (Sandbox Code Playgroud)
和
struct X : XBase
{
X() {
a = new int[100];
b = new char[100];
c = new float[100];
}
}
Run Code Online (Sandbox Code Playgroud)
然后,如果c
失败的分配(抛出异常),那么XBase
将调用析构函数,因为已经构造了基类.
没有内存泄漏?
我对么?
假设我有一个班级:
public final class Foo
以及Class clz
引用该类的反映参考.
我怎么知道(使用clz
)那Foo
是final
什么?
我使用的是第三方库,typedef
Š byte
到char
.
(这char
可能是邪恶的,signed
或unsigned
取决于编译器的选择).
不幸的是,这typedef
已经蔓延到我维护的代码库中,我很想删除它们:uint8_t
直接使用.
有一种方法,一旦我到达我的代码(即直接后),我可以以某种方式撤消这个?typedef
#include <3rdpartylib>
一旦我删除了所有的byte
s,我将能够从我的代码库中删除"解决方案" .