如何删除Git子模块?
顺便说一句,有什么理由我不能干脆做到
git submodule rm whatever吗?
我已经编写了近二十年的C和C++代码,但这些语言的一个方面我从未真正理解过.我显然使用常规演员表,即
MyClass *m = (MyClass *)ptr;
Run Code Online (Sandbox Code Playgroud)
到处都是,但似乎有两种其他类型的演员,我不知道其中的区别.以下代码行之间有什么区别?
MyClass *m = (MyClass *)ptr;
MyClass *m = static_cast<MyClass *>(ptr);
MyClass *m = dynamic_cast<MyClass *>(ptr);
Run Code Online (Sandbox Code Playgroud) 我只需要在C#2.0中编写一个字符串反向函数(即LINQ不可用)并想出了这个:
public string Reverse(string text)
{
char[] cArray = text.ToCharArray();
string reverse = String.Empty;
for (int i = cArray.Length - 1; i > -1; i--)
{
reverse += cArray[i];
}
return reverse;
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我并不是对这个功能感到疯狂,并且我确信有更好的方法可以做到这一点.在那儿?
我是新手在C++ 11中移动语义,我不太清楚如何处理unique_ptr构造函数或函数中的参数.考虑这个引用自身的类:
#include <memory>
class Base
{
public:
typedef unique_ptr<Base> UPtr;
Base(){}
Base(Base::UPtr n):next(std::move(n)){}
virtual ~Base(){}
void setNext(Base::UPtr n)
{
next = std::move(n);
}
protected :
Base::UPtr next;
};
Run Code Online (Sandbox Code Playgroud)
这是我应该如何编写unique_ptr参数的函数?
我需要std::move在调用代码中使用吗?
Base::UPtr b1;
Base::UPtr b2(new Base());
b1->setNext(b2); //should I write b1->setNext(std::move(b2)); instead?
Run Code Online (Sandbox Code Playgroud) 我分叉了一个GitHub存储库.然后我把一些更改推到了我的前叉.然后原始存储库合并了我的更改和其他一些.现在,我想合并那些我不知道的变化.我尝试了一个简单的拉动,然后是推送,但是这会让我的提交重复一次.最好的方法是什么?
我知道至少有一个C++ 11中的更改会导致一些旧代码停止编译:explicit operator bool()在标准库中引入,替换旧的实例operator void*().当然,这将破坏的代码可能是首先不应该有效的代码,但它仍然是一个重大变化:过去不再有效的程序.
还有其他重大变化吗?
我读过并听说C++ 11支持Unicode.关于这一点的一些问题:
std::string做自己应该?一般来说,我假设流不同步,由用户做适当的锁定.但是,做cout标准库中的特殊处理吗?
也就是说,如果多个线程正在写入,cout它们会破坏cout对象吗?据我所知,即使同步,你仍然会得到随机交错的输出,但保证交错.也就是说,cout从多个线程使用是否安全?
该供应商是否依赖?gcc做什么?
重要提示:如果您说"是",请为您的答案提供某种参考,因为我需要某种证明.
我关注的还不是基础系统调用,这些都很好,但是流在顶部添加了一层缓冲.
我有一对应该只是一个提交.如果我使用git,我会使用:
git rebase -i <some-commit-before>
Run Code Online (Sandbox Code Playgroud)
然后压扁它们.
我可以用mercurial做到吗?如果是这样,怎么样?