小编paq*_*etp的帖子

在C(或C++)中取消引用指针的语法

我有一位同事在C中检查这样的代码(语法#1):

(*(*(*p_member).p_member).p_member).member
Run Code Online (Sandbox Code Playgroud)

当我问他为什么不使用 - >(语法#2)时:

p_member->p_member->p_member->member
Run Code Online (Sandbox Code Playgroud)

他得到了真正的防守,指出语法#2比#1更复杂......我最终改变了他的代码,因为我不得不修改它,不能读它,然后他就疯了,我居然感动呢?

SO社区更喜欢哪种语法?两者都有效,但我发现语法#2更具可读性.

由于问题是主观的,我将此设置为社区维基.

c c++ syntax pointers

11
推荐指数
6
解决办法
3550
查看次数

为什么NetworkStream会这样读?

我有一个应用程序,使用TCPClient和它的底层NetworkStream发送通过TCP套接字终止换行的消息.

数据从实时数据流每100ms流入大约28k用于监视.

我已经删除了不相关的代码,这基本上是我们读取数据的方式:

TcpClient socket; // initialized elsewhere
byte[] bigbuffer = new byte[0x1000000];
socket.ReceiveBufferSize = 0x1000000;
NetworkStream ns = socket.GetStream();
int end = 0;
int sizeToRead = 0x1000000;
while (true)
{
  bytesRead = ns.Read(bigbuffer, end, sizeToRead);
  sizeToRead -= bytesRead;
  end += bytesRead;

  // check for newline in read buffer, and if found, slice it up, and return
  // data for deserialization in another thread

  // circular buffer
  if (sizeToRead == 0)
  {
    sizeToRead = 0x1000000;
    end = 0;
  }
} …
Run Code Online (Sandbox Code Playgroud)

c# tcp stream tcpclient

11
推荐指数
2
解决办法
1730
查看次数

用于操作Base/Derived对象的容器的函数

考虑使用数组的以下算法:

class MyType;
{
    // some stuff
}

class MySubType:MyType
{
    // some stuff
}

void foo(MyType** arr, int len)
{
    for (int i = 0;i<len;i++)
        // do something on arr[i]->
}

void bar()
{
    MySubType* arr[10];
    // initialize all MySubType*'s in arr
    foo(&arr, 10);
}
Run Code Online (Sandbox Code Playgroud)

这里没什么太花哨的.我的问题是 - 如何使用模板执行此操作?

void foo(std::vector<MyType>& s)
{
    std::vector<MyType>::iterator i;
    for (i = s.begin(); i != s.end(); i++)
        // do stuff on *i
}
Run Code Online (Sandbox Code Playgroud)

所以,在酒吧,我不能这样做:

void bar()
{
    std::vector<MySubType> s;
    foo(s);  // compiler error
} …
Run Code Online (Sandbox Code Playgroud)

c++ generics templates stl

0
推荐指数
2
解决办法
662
查看次数

标签 统计

c++ ×2

c ×1

c# ×1

generics ×1

pointers ×1

stl ×1

stream ×1

syntax ×1

tcp ×1

tcpclient ×1

templates ×1