我做了一些谷歌搜索,这是我的答案
<!--[if IE]>
<style>
.mirror {
filter: progid:DXImageTransform.Microsoft.BasicImage(mirror=1);
}
</style>
<![endif]-->
<style>
.mirror {
display:block;
-moz-transform: matrix(-1, 0, 0, 1, 0, 0);
-webkit-transform: matrix(-1, 0, 0, 1, 0, 0);
-o-transform:matrix(-1, 0, 0, 1, 0, 0);
}
</style>
<div class="mirror">testing</div>
Run Code Online (Sandbox Code Playgroud)
这里唯一的问题是镜像的中心不是对象的中心,所以我们可能需要一些javascript来将对象移动到我们想要的位置.
我试图将Observer设计模式理解为主要事件调度设计模式.观察者模式似乎是发布 - 订阅设计模式的类型或类型,我想知道为什么有两个相似的外观设计模式以及我应该如何在两者之间进行选择.
在这两种情况下,信息消息都在实体之间发送,在这两种情况下,实体必须以某种方式注册或订阅才能接收消息.
两种设计模式之间的主要区别似乎是:
我想到的一个想法是,在多线程应用程序中,可以在多个线程之间进行通信而不是Observer模式时使用Publish-Subscribe模式.也许Observer模式可以在进程之间使用,例如进程注册与另一个进程注册,以便在事件发生时得到通知.一个示例是农场管理仪表板应用程序,其注册多个动物饲料箱,如果由箱测量的饲料水平或重量下降到某个阈值以下则通知.
这两种设计模式之间是否存在其他重要差异,这些设计模式可以为选择一种模式提供标准?
design-patterns publish-subscribe event-dispatching observer-pattern
\字符串文字中的转义字符有哪些规则?是否有所有转义字符的列表?
特别是,当我\在gedit中的字符串文字中使用并按任意三个数字跟随它时,它会以不同的方式对它们进行着色.
我试图std::string用文字创建一个构造,其中0后跟空字符(\0)后跟字符0.然而,语法突出显示警告我,这可能会创建类似于0后跟空字符(\00,aka \0)的字符,也就是说,只有两个字符.
对于这个问题的解决方案,这是最好的方法:
std::string ("0\0" "0", 3) // String concatenation
Run Code Online (Sandbox Code Playgroud)
并且是否存在一些关于转义字符在字符串文字中的作用的参考?例如,'\ a'是什么?
Linux中是否有任何命令可以获取主机名的IPv6地址?
我试过了NSLookup,但似乎没有选择获取指定主机名的IPv6地址,或者我错过了它.
我有一个处理IPv6的C程序,我想通过使用不同的方法来获取主机的IPv6地址来检查我是否得到了正确的结果.
What's the difference between using the functions fgetpos() and fsetpos() and using the functions ftell() and fseek() to get and set a position in a file?
What are fgetpos() and fsetpos() good for? Why would they be used instead of ftell() and fseek()?
我不确定我是不理解还是文件没有明确制定.
以下摘录摘自最新草案(N3126,第29.6节):
bool atomic_compare_exchange_weak(volatile A* object, C * expected, C desired);
bool atomic_compare_exchange_weak(A* object, C * expected, C desired);
bool atomic_compare_exchange_strong(volatile A* object, C * expected, C desired);
bool atomic_compare_exchange_strong(A* object, C * expected, C desired);
bool atomic_compare_exchange_weak_explicit(volatile A* object, C * expected, C desired, memory_order success, memory_order failure);
bool atomic_compare_exchange_weak_explicit(A* object, C * expected, C desired, memory_order success, memory_order failure);
bool atomic_compare_exchange_strong_explicit(volatile A* object, C * expected, C desired, memory_order success, memory_order failure);
bool atomic_compare_exchange_strong_explicit(A* object, C * expected, …Run Code Online (Sandbox Code Playgroud) 前一阵子我改变了我处理c风格错误的方式.
我发现很多代码看起来像这样:
int errorCode = 0;
errorCode = doSomething();
if (errorCode == 0)
{
errorCode = doSomethingElse();
}
...
if (errorCode == 0)
{
errorCode = doSomethingElseNew();
}
Run Code Online (Sandbox Code Playgroud)
但最近我一直这样写:
int errorCode = 0;
do
{
if (doSomething() != 0) break;
if (doSomethingElse() != 0) break;
...
if (doSomethingElseNew() != 0) break;
} while(false);
Run Code Online (Sandbox Code Playgroud)
我已经看到很多代码在出现错误后没有执行任何内容,但它始终以第一种方式编写.有没有其他人使用这种风格,如果你不这样做,为什么?
编辑:只是为了澄清,通常这个构造使用errno否则我会int在打破之前将值赋值给.此外,通常还有更多代码,而不仅仅是if (error == 0 )子句中的单个函数调用.但是,要考虑很多好点.
StackOverflow上有几个答案表明以下循环是一种很好的方法来擦除std::unordered_map满足某些谓词的元素pred:
std::unordered_map<...> m;
auto it = m.begin();
while (it != m.end())
{
if (pred(*it))
it = m.erase(it);
else
++it;
}
Run Code Online (Sandbox Code Playgroud)
我对C++ 11(而不是C++ 14)特别感兴趣,而cppreference.com上的以下不祥之处表明上述循环依赖于未定义的行为,并且可能在C++ 11中无效:
保留未擦除元素的顺序(这使得可以在迭代容器时擦除单个元素)(从C++ 14开始)
另请参见标题2356.无序关联容器中擦除的稳定性,其中包含对第754页的工作草案N3797第14项的请求的措辞更改(附加短语开头",并保留相对顺序......").
这个措辞与N3797有关.
按照指示修改[unord.req],p14:
-14- insert和emplace成员不应影响对容器元素的引用的有效性,但可能使容器的所有迭代器无效.擦除成员应仅使迭代器和对已擦除元素的引用无效,并保留未擦除元素的相对顺序.
如果我对cppreference.com的注释的解释是正确的,并且上面的循环依赖于C++ 11中的未定义行为,那么在C++ 11中解决这个问题的最有效方法是什么?
x86汇编语言不得不改变,因为x86处理器架构已经从8位变为16位变为32位,现在变为64位.
我知道在32位汇编程序寄存器名称(EAX,EBX等)中,每个名称的E前缀代表扩展意味着32位形式的寄存器而不是16位形式(AX,BX等).
这些寄存器名称的R前缀在64位中代表什么?
以下代码将无法编译:
class A {
public:
A(int) {}
};
class B: virtual public A {
public:
B(): A(0) {}
};
// most derived class
class C: public B {
public:
C() {} // wrong!!!
};
Run Code Online (Sandbox Code Playgroud)
如果我A在C构造函数初始化列表中调用构造函数,那就是:
// most derived class
class C: public B {
public:
C(): A(0) {} // OK!!!
};
Run Code Online (Sandbox Code Playgroud)
它确实有效.
显然,原因是因为虚拟基类必须始终由最派生的类构造.
我不明白这个限制背后的原因.