我正在运行一些示例程序来重新熟悉C++,我遇到了以下问题.首先,这是示例代码:
void print_string(const char * the_string)
{
cout << the_string << endl;
}
int main () {
print_string("What's up?");
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,print_string的参数可能已经改为const char * const the_string.哪个更合适呢?
我理解不同之处在于,一个是指向常量字符的指针,而另一个是指向常量字符的常量指针.但为什么这两个都有效呢?什么时候相关?
我有两个目录,一个是空的.
第一个目录有许多带隐藏文件的子目录.当我cp -r从第一个目录到第二个目录的内容时,隐藏的文件也会被复制.逃避它们的任何解决方案?
当我在Vim中执行Rmodel,Rcontroller和其他人时.我只看到白色文字.但是,当我去到下一个缓冲区,然后回去:bn和:bl,颜色都在工作.
这是我的.vim文件夹 https://github.com/regedarek/dotvim
我正在尝试将这封信映射hjkl到jkl我的.vimrc文件中,以便我可以按照他们在键盘上的方式使用我的手指,同时在vim中书写.
问题是,当我将k映射到l时,它会跳转到l to;.所以k变得和; 所有这些都发生了相同的过程.
所以所有的密钥都成为一个,因为它们互相复制.
我怎么能防止这种情况?
我的代码:
typedef pair<int,int> Pair
tr1::unordered_map<Pair,bool> h;
h.insert(make_pair(Pair(0,0),true));
Run Code Online (Sandbox Code Playgroud)
Erorr
undefined reference to `std::tr1::hash<std::pair<int, int> >::operator()(std::pair<int, int>) const'
Run Code Online (Sandbox Code Playgroud)
我需要修理什么?
谢谢
我想知道为什么这两个信号在一个进程中不能被捕获、阻止或忽略?可以使用 signal() 更改其余信号的操作。这两个信号和其余信号有什么区别?
比方说,我有一个c提供size()方法的类型的容器,我想循环遍历这个容器,同时跟踪每个项目的索引:
for (/*TODO*/ i = 0; i < c.size(); i++) {...}
Run Code Online (Sandbox Code Playgroud)
在后C++ 11世界中,自动类型演绎很好地解决了很多问题.我们应该用什么来取代TODO上述?对我来说唯一正确的,无论类型size()是什么,如下:
for (decltype(c.size()) i = 0; i < c.size(); i++) {...}
Run Code Online (Sandbox Code Playgroud)
但这看起来过于冗长,在我看来,这无助于可读性.
另一种解决方案可能是:
for (auto end = c.size(), i = 0; i < end; i++) {...}
Run Code Online (Sandbox Code Playgroud)
但这也无助于可读性,当然,它与原始片段没有相同的语义.
所以,我的问题是:只给出索引限制的类型,推断循环索引变量类型的最佳方法是什么.
我有一个简单的调用std::setenv,它在我的Linux发行版下工作正常gcc.但是,clang在我的Mac OS X上使用时,出现以下错误.
error: no member named 'setenv' in namespace 'std'; did you mean simply 'setenv'?
std::setenv(name.c_str(), value.c_str(), true);
Run Code Online (Sandbox Code Playgroud)
我敢肯定,我已经阅读了C++ 11 setenv中名称空间的一部分std,但现在我不确定.
问题:应该使用setenv还是std::setenv使用,为什么会这样?
我尝试设置从接口IP地址获取的变量,ifconfig然后再读取它.但是当我执行一个echo命令时,变量仍然是空的.请看我的代码:
/usr/bin/bash -c "HOST_IPS=$(/usr/bin/ifconfig | /usr/bin/awk 'BEGIN {cnt=0} {if($0 ~ /inet / && cnt==1) {print $2} cnt++}'); echo $HOST_IPS"
Run Code Online (Sandbox Code Playgroud)
但/ bin/echo使用相同的命令工作正常:
/usr/bin/bash -c "echo $(/usr/bin/ifconfig | /usr/bin/awk 'BEGIN {cnt=0} {if($0 ~ /inet / && cnt==1) {print $2} cnt++}')"
Run Code Online (Sandbox Code Playgroud) 在Catch C++单元测试框架中是否有可能比较基于浮点类型的std :: vectors?我知道我可以比较两个容器和每个元素的大小(使用约),但这很麻烦.
积分类型向量的比较适当地工作.
现在,我必须使用这样的结构
REQUIRE(computed.size() == expected.size());
for (size_t i = 0; i < computed.size(); ++i)
REQUIRE(computed[i] == Approx(expected[i]));
Run Code Online (Sandbox Code Playgroud)
但我想使用一个衬垫(它适用于整体类型):
REQUIRE(computed == expected);
Run Code Online (Sandbox Code Playgroud)