小编Bee*_*and的帖子

在内存中复制字节时,字节顺序是否有效?

我是否正确地认为,只有当我们谈论如何存储一个值并且在复制内存时不相关时,endianess才有意义?

例如

如果我有一个值0xf2fe0000并将其存储小端系统上-字节获取存储在顺序00,00,fef2.但大端系统上的字节获取存储f2,fe,0000.

现在-如果我只是想这4个字节到其他4个字节复制(在同一系统),小端系统上我该拿含其它4个字节来结束00,00,fef2 按此顺序

或者在内存中复制这些字节时,字节顺序是否有效?

c c++ memory

4
推荐指数
1
解决办法
955
查看次数

结构中的结构数组 - 指针类型是什么?

我在由perl脚本生成的文件中有以下声明(在编译期间):

 struct _gamedata
{

 short res_count;
 struct
 {
  void * resptr;
  short id;
  short type;
 } res_table[3];
}
_gamecoderes =
{
 3,
 {
  { &char_resource_ID_RES_welcome_object_ID,1002, 1001 },
  { &blah_resource_ID_RES_another_object_ID,1004, 1003 },
{ &char_resource_ID_RES_someting_object_ID,8019, 1001 },
 }
};
Run Code Online (Sandbox Code Playgroud)

我的问题是struct _gamedata在编译期间生成,并且项目的数量res_table会有所不同.所以我不能提供一种res_table预先声明尺寸的类型.

我需要解析这个结构的一个实例,最初我是通过一个指向char的指针(并没有定义struct _gamedata为一个类型.)但我正在定义res_table.

例如

char * pb = (char *)_gamecoderes; 
                           // i.e. pb points to the instance of `struct _gamedata`.
short res_count = (short *)pb;
pb+=2;
res_table * entry = (res_table *)pb; …
Run Code Online (Sandbox Code Playgroud)

c c++

4
推荐指数
1
解决办法
345
查看次数

我可以创建一个包含多个类型声明的for循环吗?

例如:

有什么我可以做的,这可能允许我这样做:

for(TiXmlElement * pChild = elem->First(), int i=0; // note multiple type declarations
    pChild; 
    pChild=pChild->NextSiblingElement(), i++) // note multiple types
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

也许有一个boost标题?

c++

4
推荐指数
2
解决办法
848
查看次数

如何grep 7位十六进制字符串并仅返回该十六进制字符串?

我试图提取文件中所有前导的7位十六进制字符串,其中包含如下行:

3fce110:: ..\Utilities\c\misc.c(431): YESFREED (120 bytes) Misc
Run Code Online (Sandbox Code Playgroud)

grep

4
推荐指数
1
解决办法
4641
查看次数

是否有任何理由说STL不提供通过索引返回迭代器的函数?

有没有理由说STL没有提供通过索引将迭代器返回到容器的函数?

例如,假设我想将元素插入到std::list第n个位置.看来我必须通过类似的东西检索迭代器begin()并添加n到该迭代器.我认为如果我能在第n个位置获得一个迭代器会更容易,例如,std::list::get_nth_iterator(n).

我怀疑我误解了STL的原理.谁能帮忙解释一下?

谢谢BeeBand

c++ iterator stl

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

仿函数在传递给std :: for_each时是否可以保留值?

根据这个问题的第一个答案,下面的仿函数应该能够在传递之后保留一个值foreach(我无法struct Accumulator在示例中进行编译,因此构建了一个类).

class Accumulator
{
    public:
        Accumulator(): counter(0){}
        int counter;
        void operator()(const Card & c) { counter += i; }
};
Run Code Online (Sandbox Code Playgroud)

示例用法(根据示例)

// Using a functor
Accumulator acc;
std::for_each(_cards.begin(), _cards.end(), acc);
// according to the example - acc.counter contains the sum of all
// elements of the deque 

std::cout << acc.counter << std::endl;
Run Code Online (Sandbox Code Playgroud)

_cards实现为std::deque<Card>.无论多长时间_cards,完成acc.counter后为零for_each.当我在调试器中单步执行时,我可以看到计数器递增,但是,它是否与acc通过值传递有关?

c++ functor

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

如何将一组值分成两组固定大小,使其总和接近特定值

我有一组18个值(它总是18个)我需要分配到两个集合中,一个是10个项目,另一个是8个项目.

分配规则是每个集合的值必须与特定的已知值相等(或尽可能接近) - 因此在第一个集合中,值的总和必须尽可能接近1500000,在第二个集合中值的总和必须尽可能接近1000000.

这样做的最佳(也可能是最简单的)算法是什么?

进一步说明,这些值的范围都在110000到200000之间.这些值总是100的倍数,都是正整数,可能有重复.

language-agnostic algorithm

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

在Visual Studio 2010中使用boost :: test - 如何查看测试输出?

我在Win32控制台项目中使用了与Visual Studio 2010的boost :: test.boost :: test似乎main()通过提供自己的功能来处理这个功能.看起来我没有提供main().

事实是,我希望我的控制台输出不会立即消失,但这意味着我必须以main()某种方式定义该功能,以使其保持在屏幕上.事情是我重新定义的任何尝试main()都会被忽略.

我知道Cppunit可以在编译期间输出测试结果 - boost :: test有这样的东西吗?

c++ boost unit-testing visual-c++

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

使用boost foreach和自己模板的项目

我有一个std::deque< std::pair<int, int> >我想迭代使用BOOST_FOREACH.

我尝试了以下方法:

  #define foreach_ BOOST_FOREACH

  // declaration of the std::deque
  std::deque< std::pair<int, int> > chosen;

  foreach_( std::pair<int,int> p, chosen )
  {
     ... 
  }
Run Code Online (Sandbox Code Playgroud)

但是当我编译它(在Visual Studio中)时,我收到以下错误:

warning C4002: too many actual parameters for macro 'BOOST_FOREACH'
1>c:\users\beeband\tests.cpp(133): error C2143: syntax error : missing ')' before '>'
1>c:\users\beeband\tests.cpp(133): error C2059: syntax error : '>'
1>c:\users\beeband\tests.cpp(133): error C2059: syntax error : ')'
1>c:\users\beeband\tests.cpp(133): error C2143: syntax error : missing ';' before '{'
1>c:\users\beeband\tests.cpp(133): error C2181: illegal else …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-foreach

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

我可以从基于循环的范围内获取项目的索引吗?

我已经定义了一个像这样的指针deque:

std::deque<BoardSquare *> mydeque;
Run Code Online (Sandbox Code Playgroud)

我想在我的双端队列中使用基于范围的循环:

for (BoardSquare * b : mydeque) {

    // do something involving the index of b
}
Run Code Online (Sandbox Code Playgroud)

是否有可能从基于循环的范围内获取项目的索引?

c++ indexing loops range c++11

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