小编Mon*_*urd的帖子

在c ++中,函数名前面的"〜"表示什么?

 template <class T>
 class Stack
 {
 public:
    Stack(int = 10) ; 
    ~Stack() { delete [] stackPtr ; }  //<--- What does the "~" signify?
    int push(const T&); 
    int pop(T&) ;  
    int isEmpty()const { return top == -1 ; } 
    int isFull() const { return top == size - 1 ; } 
 private:
    int size ;  
    int top ;  
    T* stackPtr ;  
 } ;
Run Code Online (Sandbox Code Playgroud)

c++

127
推荐指数
4
解决办法
9万
查看次数

如何使UILabel显示轮廓文字?

我想要的只是在我的白色UILabel文本周围的一个像素黑色边框.

我使用下面的代码完成了UILabel的子类化,我从几个相关的在线示例中笨拙地拼凑而成.并且它工作但它非常非常慢(除了在模拟器上)并且我无法让它垂直居中文本(因此我暂时硬编码了最后一行的y值).哈啊!

void ShowStringCentered(CGContextRef gc, float x, float y, const char *str) {
    CGContextSetTextDrawingMode(gc, kCGTextInvisible);
    CGContextShowTextAtPoint(gc, 0, 0, str, strlen(str));
    CGPoint pt = CGContextGetTextPosition(gc);

    CGContextSetTextDrawingMode(gc, kCGTextFillStroke);

    CGContextShowTextAtPoint(gc, x - pt.x / 2, y, str, strlen(str));
}


- (void)drawRect:(CGRect)rect{

    CGContextRef theContext = UIGraphicsGetCurrentContext();
    CGRect viewBounds = self.bounds;

    CGContextTranslateCTM(theContext, 0, viewBounds.size.height);
    CGContextScaleCTM(theContext, 1, -1);

    CGContextSelectFont (theContext, "Helvetica", viewBounds.size.height,  kCGEncodingMacRoman);

    CGContextSetRGBFillColor (theContext, 1, 1, 1, 1);
    CGContextSetRGBStrokeColor (theContext, 0, 0, 0, 1);
    CGContextSetLineWidth(theContext, 1.0);

    ShowStringCentered(theContext, rect.size.width / 2.0, 12, [[self text] cStringUsingEncoding:NSASCIIStringEncoding]);
} …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch core-graphics objective-c ios

102
推荐指数
7
解决办法
6万
查看次数

在C++中,编译器"内联"一个函数对象意味着什么?

在wikipedia 关于函数对象的文章中,它说这些对象在与for_each一起使用时具有性能优势,因为编译器可以"内联"它们.

我对这在这种情况下的意义有点模糊......或者我不好意思说的任何背景.谢谢你的帮助!

c++ functor function-object

15
推荐指数
2
解决办法
3580
查看次数

如何在OpenGL-ES中获得VBO的大小?

我每次想要绘制它们时都会向GPU发送顶点数组(32位浮点数),但这并不高效,所以我切换到顶点缓冲区对象来缓存GPU中的顶点数组.

它工作正常,但我想知道是否有办法在不返回原始顶点数组的情况下确定给定VBO的大小?这是我正在努力的过程:

  1. 我有一个顶点数组,例如,六个32位浮点数.
  2. 我通过OpenGL-ES将我的顶点数组发送到GPU,它存储在VBO中 - 我保留了一个句柄.
  3. 我的顶点数组此时是多余的,所以我删除了它.
  4. 后来我使用手柄使OpenGL-ES绘制了一些东西,但此时我还想知道如何确定最初用于创建VBO的顶点数组的大小.我现在只有VBO句柄 - 我能否以某种方式重新确定我在这个VBO中存储了6个32位浮点数?

我可能错过了一些非常明显的东西.谢谢你的任何建议!

opengl-es

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

可以哄骗C的fgets使用字符串*而不是文件吗?

具体来说,此处的代码示例效果很好,但仅当字符串存储在文件中时才有效.

有时我需要它来处理生成的字符串(存储在字符串变量中),但是我无法说服fgets的第三个参数来处理字符串变量,因为它是指向FILE结构的指针.

或者也许有一个功能相当于可以在字符串上使用的fgets?

有什么建议?谢谢!

c string file fgets

8
推荐指数
2
解决办法
3658
查看次数

在结构体的STL Map中,为什么"[]"运算符会导致结构体的dtor被多次调用2次?

我创建了一个简单的测试用例,展示了我在一个更大的代码库中注意到的奇怪行为.这个测试用例如下.我依靠STL Map的"[]"运算符来创建指向这种结构的映射中的结构的指针.在下面的测试用例中,线...

TestStruct *thisTestStruct = &testStructMap["test"];
Run Code Online (Sandbox Code Playgroud)

...给我指针(并在地图中创建一个新条目).我注意到的奇怪之处在于,这一行不仅会导致地图中的新条目被创建(因为"[]"运算符),但由于某种原因,它会导致结构体的析构函数被多次调用两次.我显然错过了一些东西 - 非常感谢任何帮助!谢谢!

#include <iostream>
#include <string>
#include <map>

using namespace std;
struct TestStruct;

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

    map<string, TestStruct> testStructMap;

    std::cout << "Marker One\n";

    //why does this line cause "~TestStruct()" to be invoked twice?
    TestStruct *thisTestStruct = &testStructMap["test"];

    std::cout << "Marker Two\n";

    return 0;
}

struct TestStruct{
    TestStruct(){
        std::cout << "TestStruct Constructor!\n";
    }

    ~TestStruct(){
        std::cout << "TestStruct Destructor!\n";
    }
};
Run Code Online (Sandbox Code Playgroud)

上面的代码输出以下内容......

/*
Marker One
TestStruct Constructor!             //makes sense …
Run Code Online (Sandbox Code Playgroud)

c++ constructor stl copy-constructor temporary-objects

8
推荐指数
3
解决办法
1634
查看次数

如何从正则表达式捕获组中修剪空白?

被检查的字符串类似于以下内容(注意括号之间的空格):

[name]  [address ] [ zip] [ phone number ]
Run Code Online (Sandbox Code Playgroud)

我目前使用的表达方式......

\[([^\])]*)\]
Run Code Online (Sandbox Code Playgroud)

...成功捕获括号内的每个文本,但它也抓住了前导和尾随空格,所以我最终得到:

"name"  "address "  " zip"  " phone number "
Run Code Online (Sandbox Code Playgroud)

但我寻求的是:

"name"  "address"  "zip"  "phone number"
Run Code Online (Sandbox Code Playgroud)

在这些例子中,正则表达式如何被说服不捕获空白?(嵌入的空格除外 - 例如"电话号码"中的单词之间的空格.)

(注:我知道我可以只从捕获的变量修剪的表现做,但我试图做到这一点表达的情况下).

谢谢你的任何想法!下面是我用来测试这个的确切代码:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\[([^\\])]*)\\]" options:0 error:nil];

NSString *string = @" [name] [address ] [ zip] [ phone number ] ";

NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length])
    withTemplate:@"\n\n[$1]"]; //note: adding brackets back here just to make it easy to see …
Run Code Online (Sandbox Code Playgroud)

regex objective-c

8
推荐指数
1
解决办法
4748
查看次数

使用匹配的字符串搜索结构的c ++ std向量

我敢肯定,我正在努力实现这一目标.

我有一个矢量......

vector<Joints> mJointsVector;
Run Code Online (Sandbox Code Playgroud)

...由以下图案构成的结构组成:

struct Joints
{
    string name;

    float origUpperLimit;
    float origLowerLimit;   
};
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用"std :: find"搜索mJointsVector以通过其字符串名称找到一个单独的关节 - 到目前为止没有运气,但以下示例帮助,至少在概念上:

向量,结构和std :: find

任何人都能指出我在正确的方向吗?

c++ vector std find data-structures

7
推荐指数
2
解决办法
8221
查看次数

什么是C++中的"集合"?它们什么时候有用?

我很难概念化c ++集,实际上是一般的.

这些是什么?它们有用吗?

c++ computer-science set

5
推荐指数
2
解决办法
4211
查看次数

使用C/C++有效地反序列化由浮点数,标记和空行组成的字符串

我有大字符串,类似于以下...

some_text_token

24.325973 -20.638823  

-1.964366 0.753947  
-1.290811 -3.547422  
0.813014 -3.547227  

0.472015 3.723311  
-0.719116 3.676793  

other_text_token  

24.325973 20.638823  

-1.964366 0.753947  
-1.290811 -3.547422  
-1.996611 -2.877422  
0.813014 -3.547227  

1.632365 2.083673  
0.472015 3.723311  
-0.719116 3.676793  

...

...我正在尝试有效地,并且在交错的序列中,它们出现在字符串中,抓住......

  1. 文本标记
  2. 浮动值
  3. 空白行

......但我遇到了麻烦.

我已经尝试过strtod并成功地从字符串中抓取了浮点数,但我似乎无法使用strtod获取循环来向我报告交错的文本标记和空行.我不是100%自信strtod是"正确的轨道"给出交错的令牌和空白行,我也感兴趣.

字符串中存在标记和空行以给浮点数提供上下文,因此我的程序知道每个标记之后要使用的浮点值是什么,但是strtod看起来更加适应,可以理解,只是报告它遇到的浮点数一个字符串,不考虑空白行或令牌等愚蠢的东西.

我知道这在概念上并不是很难,但是对C/C++来说相对较新我在判断我应该关注哪些语言特性以最大限度地利用C/C++能够对这个问题产生的效率时遇到困难.

有什么指针吗?我非常感兴趣为什么各种方法的功能或多或少都有效.谢谢!!!

c c++ string floating-point parsing

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

glPushMatrix()/ glPopMatrix()不会影响混合状态.为什么是这样?

我一直试图让OpenGL-ES做大致如下的事情,看看是否可以使用glPushMatrix()和glPopMatrix()将诸如混合状态之类的东西放回到调用glPushMatrix()之前的状态.

它适用于旋转/翻译的东西 - 为什么它不适用于其他一些东西,如混合状态?

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); //<-first blend mode

glPushMatrix();

glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); //<-second blend mode

//...drawing and stuff here...

glPopMatrix(); 

//at this point it appears the second blend mode is still in effect - why?
Run Code Online (Sandbox Code Playgroud)

我是否正确混淆或是否有另一个pop/push组合的函数用于未被glPopMatrix()和glPushMatrix()弹出/推送的状态?

还有另一种方法可以轻松地将所有东西都设置回以前的状态吗?感谢任何照明!

opengl-es

2
推荐指数
1
解决办法
915
查看次数

我是否可以释放对象实例的不再需要的属性而不必担心dealloc将在以后"过度释放"它?

我有一个对象"myObject"的实例,它有一些UIImage对象作为属性.在我第一次访问这些属性后,我真的不再需要它们了.

我可以在实例本身发布之前对实例的UIImage属性进行发布,还是稍后在"myObject"dealloc发布它们时会过度释放UIImage属性?

objective-c

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