std::string提供了一种max_size()方法来确定它可以包含的最大元素数.
但是,为了计算字符串的最大长度,程序员必须创建一个(可能是空的)字符串对象.
如果这个类不需要程序员的任何信息,为什么不能max_size()作为编译时常量?字符串是否需要某种运行时信息来计算其最大大小?
我前段时间使用该p4 diff命令生成了一个补丁.
但是,现在我想应用它,我意识到没有办法在Perforce中应用补丁.
由于我没有使用该-du选项,因此补丁采用那种模糊的perforce格式,无法应用patch(1).原来的变化已经丢失.此外,该补丁超过300kb,因此手动编辑不是一个真正的选择.
我有什么选择?是否有补丁转换器,或一些允许应用这些补丁的Perforce扩展?
在C++中,是否可以仅使用编译时工具从字符串文字生成整数?
例如,如果我们只有文字"6",有没有办法将它用作模板参数,比如std::array<GET_INTEGER("6")> a;?
我知道constexpr基于技术的技术,例如:
template <int N> constexpr char get_char(const char s[N], int n) {
return s[n];
}
Run Code Online (Sandbox Code Playgroud)
但是constexpr大多数编译器还没有准备好,所以我正在寻找可能使用宏和TMP的解决方案.
这只是为了实验,所以欢迎疯狂的想法.
这个简单的SSE代码:
#include <vector>
#include <emmintrin.h>
int main() {
std::vector<__m128> blah;
blah.push_back(__m128());
}
Run Code Online (Sandbox Code Playgroud)
在MSVC 10上崩溃时出现段错误0xffffffff.
怎么可能出错?
我正在尝试使用该new关键字,但我无法找到此行为的解释.假设我们有一个函数返回一个整数:
(在萤火虫中)
>>> function x() { return 2; }
>>> x()
2
>>> new x()
x { }
Run Code Online (Sandbox Code Playgroud)
但是如果函数返回一个数组:
>>> function y() { return [2]; }
>>> y()
[2]
>>> new y()
[2]
Run Code Online (Sandbox Code Playgroud)
这是为什么 ?
使用条件运算符时,我遇到了一个奇怪的编译错误.
a,b是int值,以下表达式得到编译错误.
(a>b)?( std::cout << a ) : ( b=MAX );
16 (b <unknown operator> 5)'
(a>b)?( a=MAX ) : ( std::cout<<b );
16 (&std::cout)->std::basic_ostream<_CharT, _Traits>::operator<< [with _CharT = char, _Traits = std::char_traits<char>](b)'
Run Code Online (Sandbox Code Playgroud)
但这个表达效果很好,这很奇怪..
(a>b)?( std::cout << a ) : ( std::cout<<b );
Run Code Online (Sandbox Code Playgroud)
我不知道是什么造成了这样的差异,并且不知道为什么编译错误代表.这是我的gcc信息:
Reading specs from ./../lib/gcc/mingw32/3.4.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --e
nable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-ja
va-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchroniz
ation --enable-libstdcxx-debug
Thread …Run Code Online (Sandbox Code Playgroud) 我有一个类结构,它表示(内部)我希望输出到文件的数据.
一些成员变量对数据类是私有的,因此它可以自我管理并阻止出错.
然后我希望将这些数据输出为多种文件格式.我可以做点什么
savefile_formatA(DataClass* pDataClass, ofstream& fout);
savefile_formatB(DataClass* pDataClass, ofstream& fout);
Run Code Online (Sandbox Code Playgroud)
除了函数需要再看到私有成员变量DataClass.我当然可以savefile_formatXYZ()做朋友的功能但是我需要为每种不同的格式添加一个朋友声明.
是否有解决此类问题的标准设计模式?你会如何解决这个问题?
谢谢!
我不久前偶然发现了这个问题,我终于得到了答案!
问题如下:
#include <iostream>
using namespace std;
template <class FIRST, class SECOND>
FIRST multiply(FIRST a, SECOND b){
return a * b;
}
int main(){
int x = 39;
double y = 38.38;
cout << multiply(x, y) << endl;
}
Run Code Online (Sandbox Code Playgroud)
在这个C++代码中,我有两个模板参数,函数的返回类型是一个参数的类型.我的问题是返回类型必须是(在这种情况下)与变量相同的类型a.我尝试使用THIRD模板参数,但它给了我一个编译错误,有人可以向我解释一下吗?
我不希望它通常是一个long或者什么,我希望返回类型是传递的变量的"最大"类型,因此它也可以使用字符和字符串(对于那些我显然会做另一个操作的人)或者什么,这只是一个例子).
c++ ×6
templates ×2
arrays ×1
c# ×1
data-mining ×1
diff ×1
file-format ×1
function ×1
gcc ×1
javascript ×1
new-operator ×1
oop ×1
patch ×1
perforce ×1
return-type ×1
sse ×1
string ×1
text ×1
visual-c++ ×1