小编use*_*652的帖子

定义与变量a相同类型的变量b

是否可以声明var_b与另一个变量相同类型的变量var_a

例如:

template <class T>
void foo(T t) {

   auto var_a = bar(t);
   //make var_b of the same type as var_a

}


F_1 bar(T_1 t) {

}

F_2 bar(T_2 t) {

}
Run Code Online (Sandbox Code Playgroud)

c++ templates traits c++11

24
推荐指数
4
解决办法
2939
查看次数

为什么堆栈中没有可变大小的数组?

我真的不明白为什么我不能在堆栈上有一个可变大小的数组,所以像

foo(int n) {
   int a[n];
}
Run Code Online (Sandbox Code Playgroud)

据我了解部分数据段的堆栈(-segment),因此它不是"常量".

c++ arrays dynamic-data

21
推荐指数
3
解决办法
6722
查看次数

功能后的分号

是否有一个特定的原因,为什么有些人在卷曲闭合函数括号后添加分号?

void foo() {

};
Run Code Online (Sandbox Code Playgroud)

c++ syntax

20
推荐指数
2
解决办法
2万
查看次数

范围与变量的生命周期

变量的范围和生命周期之间的关系是什么?如果变量超出范围,则其内存是否允许被另一个变量覆盖,或者在保留该函数之前保留该空间.

我很想,因为我想知道下面的代码是否真的有效,或者是否可能是*p未定义

foo() {
  int *p;
  {
    int x = 5; 
    p = &x;
  }
  int y = *p;


}
Run Code Online (Sandbox Code Playgroud)

c++ scope

20
推荐指数
3
解决办法
2万
查看次数

在header或cpp中包含std库?

如果我有一个使用iostream的A类,我应该把iostream的include语句放在Ah或A.cpp中吗?

c++ header-files

19
推荐指数
1
解决办法
3万
查看次数

C++:从template参数继承类

我最近看到了以下C++代码片段

template <class B>
class A : public B
{
   ...
};
Run Code Online (Sandbox Code Playgroud)

我想知道这样的设计在哪种设置中是好的做法?

我理解它的方式是,将超类作为模板参数允许A的用户在实例化A的对象时选择超类.

但是如果是这种情况,那么为所有用作模板参数并具有A扩展C的类(B)的公共超类C不是更好吗?

c++ inheritance templates design-patterns

18
推荐指数
2
解决办法
5912
查看次数

目前使用哪种Boost UTF后端?

按照加速手册(http://www.boost.org/doc/libs/1_56_0/libs/locale/doc/html/using_localization_backends.html),

我可以使用以下方法设置UTF后端:

boost::locale::localization_backend_manager my = boost::locale::localization_backend_manager::global();
my.select("std");
Run Code Online (Sandbox Code Playgroud)

有没有办法检查,是否确实使用了std后端?

我似乎只能获得所有可用的后端,但不能获得当前活动的后端

boost::locale::localization_backend_manager lbm = boost::locale::localization_backend_manager::global();
auto s = lbm.get_all_backends();
for_each(s.begin(), s.end(), [](string& x){ cout << x << endl; });
Run Code Online (Sandbox Code Playgroud)

c++ boost utf-8

14
推荐指数
1
解决办法
339
查看次数

_int_malloc和malloc之间有什么区别(在Valgrind中)

我很惊讶我找不到任何文件说明Valgrind 工具的输出_int_mallocmalloc输出之间的区别callgrind.

有人可以解释一下他们的区别吗?

此外,我实际上编写C++代码,所以我完全new不使用malloc,但在callgrind输出中只显示mallocs.

malloc valgrind memory-management dynamic-memory-allocation

13
推荐指数
1
解决办法
786
查看次数

使用UTF-8在非ASCII字符上运行Ascii正则表达式

#include <boost/regex.hpp>

#include <string>
#include <vector>
#include <iostream>

int main(int argc, char* argv[]) {

    std::string text = argv[1];
    std::string patterns = argv[2];

    boost::regex regex = boost::regex(patterns);

    boost::smatch match;

    std::cout << boost::regex_search(text, match, regex) << std::endl;    
}
Run Code Online (Sandbox Code Playgroud)

如果我在输入上运行程序hello¿ ¿(包含UTF-8编码的非ASCII字符),则返回0ie not found,但如果我在输入hel√√上运行它(再次包含非ascii),则返回1,即找到.

我的问题:boost::regex当运行utf字符时,(即ascii版本)的预期行为是什么?


编辑:感谢所有的评论,我仍然感兴趣的是为什么输出正好1,因为文本和正则表达式都包含非ascii字符.我的猜测是字节被解释为ascii,因此它们匹配.

c++ regex boost utf-8

12
推荐指数
1
解决办法
1143
查看次数

静态变量动态分配

函数内部的静态变量仅在程序的生命周期内分配一次.

所以,如果我有一个像这样的功能:

void f(int n) {

  static int *a = new int[n];

}
Run Code Online (Sandbox Code Playgroud)

我先打电话

f(1)
Run Code Online (Sandbox Code Playgroud)

然后

f(3)
Run Code Online (Sandbox Code Playgroud)

第二次通话后阵列有多大?

c++ static dynamic

9
推荐指数
2
解决办法
2203
查看次数