我首先将int32数字转换为char [4]数组,然后通过(int*)将数组转换回int32,但数字与之前的数字不同:
unsigned int num = 2130706432;
unsigned int x;
unsigned char a[4];
a[0] = (num>>24) & 0xFF;
a[1] = (num>>16) & 0xFF;
a[2] = (num>>8) & 0xFF;
a[3] = num & 0xFF;
x = *(int *)a;
printf("%d\n", x);
Run Code Online (Sandbox Code Playgroud)
输出是127.如果我设置num = 127,输出是2130706432.有没有人有想法?
我有一个指向动态分配数组的类,所以我创建了复制构造函数和赋值运算符函数.由于复制构造函数和赋值运算符函数执行相同的工作,我从赋值运算符函数调用复制构造函数但得到"error C2082: redefinition of formal parameter".我正在使用Visual Studio 2012.
// default constructor
FeatureValue::FeatureValue()
{
m_value = NULL;
}
// copy constructor
FeatureValue::FeatureValue(const FeatureValue& other)
{
m_size = other.m_size;
delete[] m_value;
m_value = new uint8_t[m_size];
for (int i = 0; i < m_size; i++)
{
m_value[i] = other.m_value[i];
}
}
// assignment operator function
FeatureValue& FeatureValue::operator=(const FeatureValue& other)
{
FeatureValue(other); // error C2082: redefinition of formal parameter
return *this;
}
Run Code Online (Sandbox Code Playgroud) 我正在调试一个c ++程序:
gdb simplesearch.o
Run Code Online (Sandbox Code Playgroud)
然后gdb成功启动:
(gdb) Reading symbols from /home/zwx/workspace/xapian/examples/simplesearch.o...done.
Run Code Online (Sandbox Code Playgroud)
但是当我试图跑:
(gdb) run
Run Code Online (Sandbox Code Playgroud)
gdb报告:
Starting program: /home/zwx/workspace/xapian/examples/simplesearch.o
/bin/bash: /home/zwx/workspace/xapian/examples/simplesearch.o: cannot execute binary file
/bin/bash: /home/zwx/workspace/xapian/examples/simplesearch.o: Success
During startup program exited with code 126.
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
有许多方法可以迭代连续的枚举
enum Animal {Cat, Dog, Dolphin}
Run Code Online (Sandbox Code Playgroud)
但有没有一种方便简单的方法来迭代非连续的枚举元素
enum Animal {Cat = 0, Dog = 5, Dolphin = 8}
Run Code Online (Sandbox Code Playgroud) 我写了一个简单的test.cc如下:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我编译:
g++ -g test.cc -o test.o
Run Code Online (Sandbox Code Playgroud)
我在线上跑gdb了一个断点"Hello world":
$ gdb test.o
(gdb) b 7
(gdb) c
Run Code Online (Sandbox Code Playgroud)
然后gdb停"Hello world"在线上,但是当我跑
(gdb) s
Run Code Online (Sandbox Code Playgroud)
它无法进入该cout功能.所以我的问题是,我该如何进入这个cout功能呢?
问题是:给定一组可能包含重复项的数字,返回所有唯一的排列。
天真的方法是使用一个集合(在 C++ 中)来保存排列。这需要O ( n ! × log( n !)) 时间。有更好的解决方案吗?
我正在测试vector的shared_ptr.目的很简单,我想返回一个向量指针并访问其中的值.但它给了例外."在内存位置的.. std:out_of_range处未处理的异常......".我正在使用Visual Studio 2012.
vector<int>* func()
{
boost::shared_ptr<vector<int> > vec(new vector<int>());
vec->push_back(123);
return vec.get();
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int>* result = func();
cout << result->at(0); // ERROR here
return 0;
}
Run Code Online (Sandbox Code Playgroud) c++ ×4
gdb ×2
algorithm ×1
boost ×1
c ×1
combinations ×1
enums ×1
permutation ×1
visual-c++ ×1