小编dzi*_*wna的帖子

我应该使用shared_ptr还是unique_ptr?

我有一个关于std::unique_ptr和的问题std::shared_ptr.我知道有很多关于何时使用哪一个的问题,但我仍然不确定我是否正确理解它.我在某处读到了智能指针的默认选择std::unique_ptr,但据我了解,我应该更喜欢使用std::shared_ptr.例如,我有:

class B;
class A
{
private:
   B* b;
public:
   B* getB();
};

A::getB()
{
   return b;
}
Run Code Online (Sandbox Code Playgroud)

所以基本上类A拥有指向类型对象的指针,B并且有一个返回该指针的方法.如果我创建了getter,我假设其他一些类可以访问这个指针,因此它应该shared_ptr代替unique_ptr.我是对的,还是我还没有得到它?

c++ smart-pointers shared-ptr unique-ptr c++11

25
推荐指数
2
解决办法
2万
查看次数

Newtonsoft.Json.JsonReaderException:未终止的字符串.预期的分隔符

我在解析包含JSON的字符串时收到此异常:

Newtonsoft.Json.JsonReaderException: Unterminated string. Expected delimiter: ". Path '[114].var2', line 1, position 431602.
Run Code Online (Sandbox Code Playgroud)

所以我去了那个(431602)的位置,发现它在这里:( ...)lZmdoaWpzdHV2d3h5KohIWGh4iJipKTlJWWl5iZmqK*jp*KWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW1(...)

所以它只是简单的"jp"字符,不应该是错误的.

这个例外可能是什么原因?

编辑为了更具体,我还在其周围添加了一些包含少量变量的字符串:

"var1":"946","var2":"\/9j\/4AAQSkZJRgABAQAAAQABAAD\/\/gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gNjAK\/9sAQwANCQoLCggNCwoLDg4NDxMgFRMSEhMnHB4XIC4pMTAuKS0sMzpKPjM2RjcsLUBXQUZMTlJTUjI+WmFaUGBKUVJP\/9sAQwEODg4TERMmFRUmTzUtNU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P\/8AAEQgAeABHAwEiAAIRAQMRAf\/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC\/\/EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29\/j5+v\/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC\/\/EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29\/j5+v\/aAAwDAQACEQMRAD8A9OooooAKTNLTaAI7m5jtoWllYKqjOTXmniTxrqMt00elXflQDg4TB\/765P8AKtPxnqdxc67HokZEVuqB55O+OvH4Vz2qalbQCAWiQqpBwyRAuADjC5GAM5GepwT6Z5pVJqpY0UVy3LXh\/wAU65JGySqb0K3LLOfMH4ZyR+FbMXj0218kN5bs0R4f++h\/TP06+9cdZxWWqyyxo0qXuCyFpMlz+X+FQarMb6CByzedANkin7w\/Hrjg9elTG\/tLjaXKe32tzDd20dxbSLJFIMqw7iiuR8B6r51qtm5XfGigj1P+Qf0orohPmRm1Y7OiiirEFIRS0UAecfEbTJYro6tbSNuKKkir2UgjP8qwRbO+mXiwxxvP+6iw+Pkwoyee3J59q7vxaxt7uGaZN9q8ZjlX\/Zzz\/NT+BrkBJZRXzI8jQMmUVuAJY+wOeOnuCPeuKrKSk1Y2gkZmm2lrZ6haJPbOlwSHExlwu0dWwPboKuqqy+JYbmCNSk12UY5yGRdvzfmrnNYpihuL1ks7Se4cnasa5Kg\/zIq3dx30t+mm26CCWNNrFWwIUx8xJBOBj3\/U05Ru736AnpYteFUuJvFSRwybtxZ2Zc4A2HA\/L+dFdJ4PmtBrMOn6YhaCBGaSXH3jjGfzx+Aoram3JXtYzluegUUUVsSFFFFAFa\/tYby2MM65U9D6GvMfEeg32m5CwPc2n8EkQJaP29cV6fdSJDE0sjYVRkmuD1fxHqU8p\/s+wl8kHALxMS3vjtWU7XuUmznbO38S6lbFIL2SK16Zf5N35DJq9b+FobVDJe3ny9X28A\/UmmNe+J7kbUhkQH\/pkF\/nTU0K8um36ret\/uht5\/wFcbk1vJRXlqzVK\/S50\/guazbVZrfTYx5MURLuBwTkADPfvRWv4Q02HT9PdoI9okbgnknHcmiuyilyKxlPc36KKK1JCmuyopZ2CqoySTgAU6ue8TRXOpQfYLW5WCJj++bBJb\/ZHt61FSpGmryY1FvRFW+8V6O0m37aCq9AqMc\/pVCfxppUIIjiuJPooA\/U1Vj8D2xOZ72Vv91Qv+NWH8JaVFg7ZpSB\/G\/+GK8qpLDSlzSbZulO1kZVz4xspSfL0yTPr52P6VWSbWtXlSGxs3gWRgA+Mf8Ajx\/pW0H0XSG+Y2sJHpgt\/jXReG5YdQR9QhVvKyUiZlxu9SP5fnV0VGU1yQ07sJNpayNextUsrGG1jJKxIFyep9z9etFT0V6pzhRRUNzOtvEZH+gA6k+lJtJXYGP4o8RQ6FbqCplnk+6gbBA9T\/n+VcHP42vHYmC2hjz\/AHiWP9K67UNGsLqd7u\/Rpp5OTuc4HoAB2FUhDodgculnAR\/e27v8a82riaVR\/C2bxhJLexzaa\/r1\/wDLA8p9oYv\/AK2aVtN8QXn+uFwQevnS4A\/AmuifxTpFvlI5Hl9o0P8AXFY194xIJFrZ\/RpG\/oP8aIyqv+HTS\/r5A1Hqw0vwTJdXiJe3ACnlliGePqf8K9OtreK0to7e3QJFEoVVHYCuf8Epezaa2o6gQHuT+6QLgKg7\/j\/hXS13UVNR996mUmr6BRRRWpIyWRIYnklYIiAszE4AA6mvNtW8Q6rqmoNJpqzrbR8QqkeSf9o8dT+ldfrOrWkbtBJcwKkf+s3uBk9l\/qfwrFm8WaRCNrXW8+iKT\/8AWrjrV3fkjG5rGGl27HJyaf4m1FyZRdFT2kk2j8iafB4Ov2cefPDGPYlj\/n8a2LjxnZKD5FvPJ\/vYUf1rHn8Z3jt+4too\/wDeJY\/0rJSxL+GKRVqa3dzctfB9lHg3E80p9BhR\/X+dalloel\/bkt4LWLcBuct8zBfXmuPW58R6mm5Tc7D\/AHR5a\/nxXoXhHQjounE3BDXlwd0zZzj0XPt\/PNOFCpOXvzv5ITmktEboAVQqjAAwAKWiivQMQooooA8417wlc3OsX00U0McUkvmDOc8gE8Y9SazIfCUCNi5upH9kUL\/PNdZ411S60ia3e3ijdLhSpLg8Ffoff9K8+udc1i7lKwswz2hj\/wAmuKca7k7OyNouCWqOpt9A0mFMm3Lkd3cn\/wCtT2uNF0\/7rWkLDsoG79Oa5BNL1q95m8zB7zSf061p6d4OmnuESa5XJONsa5\/U1g6Uft1LlqT6RO18OXUWsXLSW6u1tbEZkYYDP2A+nX8q6qqek6bb6Tp0VlajCRjknqx7k1crvpUo0o2iYSk5O7CiiitSQooooAoavaLc26ExLI0ThgCufY\/zrEOi39xIf3ccMeeNx7fQUUVzzoRqTvIuM3FaFqLw1ggy3ZI7hEx+pP8AStOy0u2sm3xb2fGNznOKKKuNGnHVITnJ7su0UUVqSJRmiigAzRRRQB\/\/2Q==","var3":"77241"
Run Code Online (Sandbox Code Playgroud)

c# json exception json.net

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

在画布上绘制2个圆圈

我想画两个这样的圆圈:

在此输入图像描述

这就是我试图这样做的方式:

Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);

Canvas c = new Canvas(bmp);

RectF rect = new RectF(0,0,width,width);
Paint paint = new Paint();
drawCircles(paint, c, width, height, width);
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageBitmap(bmp);
img.setScaleType(ScaleType.FIT_CENTER);
Run Code Online (Sandbox Code Playgroud)

这是我的drawCircles()方法:

private void drawCircles(Paint paint, Canvas c, int width, int height, int radius) {
        paint.setARGB(255, 255 , 10, 21);
        paint.setStrokeWidth(10);
        paint.setAntiAlias(true);
        paint.setStrokeCap(Paint.Cap.BUTT);
        paint.setStyle(Paint.Style.STROKE);
        if(width < height && radius == 0){
            radius = width/2;
            height = width;
        } else if (radius == 0){
            radius …
Run Code Online (Sandbox Code Playgroud)

graphics android canvas

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

在2D std :: vector中移动行/列的最有效方法

我正在用C++创建游戏应用程序.我已经地图表示为2维std::vectorTile对象.

我需要在玩家移动时更新该地图.从服务器应用程序中,我获得了包含全局映射的新部分的行或列,该部分应放在本地客户端的映射中,例如:

在此输入图像描述

在图1中,在玩家移动之前有一张本地地图.顶行填充对象1,中心为2,底部为0.现在当玩家向上移动时,我得到新的顶行填充对象3,其他所有其他都应该向下,前一个底行应该消失.

我只能通过在for循环中移动所需的对象来做到这一点,但我在想是否在标准库中已经存在某种算法,或者通过许多有效的方法来实现这种修改.

编辑:

对不起,我没有意识到对行和列执行此操作之间会有区别,但确实存在.所以我也编辑了我的头衔,因为我有时也需要为专栏做这个.

c++ algorithm performance vector multidimensional-array

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

如何在浏览器中打开本地html页面

我正在制作一个应用程序,我想在浏览器中打开一个本地html页面.我可以打开google.com.但是当我打开本地html文件时.但我得到以下错误

找不到请求文件.

以下是我的代码:

try
    {
        Intent i = new Intent(Intent.ACTION_VIEW);
        File f=new File("file:///android_asset/www/trialhtml.html");
        Uri uri = Uri.fromFile(f);
        i.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
        i.setData(uri);
        startActivity(i);
    }
    catch(Exception e)
    {
      System.out.print(e.toString());   

    }
Run Code Online (Sandbox Code Playgroud)

browser android

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

错误:无效的基类C++

请问任何人,解释一下可能导致此错误的原因?

Error: Invalid base class
Run Code Online (Sandbox Code Playgroud)

我有两个类,其中一个派生于第二个类:

#if !defined(_CGROUND_H)
#define _CGROUND_H

#include "stdafx.h"
#include "CGameObject.h"


class CGround : public CGameObject // CGameObject is said to be "invalid base class"
{
private:
    bool m_bBlocked;
    bool m_bFluid;
    bool m_bWalkable;

public:
    bool draw();

    CGround();
    CGround(int id, std::string name, std::string description, std::string graphics[], bool bBlocked, bool bFluid, bool bWalkable);
    ~CGround(void);
};

#endif  //_CGROUND_H
Run Code Online (Sandbox Code Playgroud)

而CGameObject看起来像这样:

#if !defined(_CGAMEOBJECT_H)
#define _CGAMEOBJECT_H

#include "stdafx.h"

class CGameObject
{
protected:
    int m_id;
    std::string m_name;
    std::string m_description;
    std::string m_graphics[];

public:
    virtual bool …
Run Code Online (Sandbox Code Playgroud)

c++ oop class derived-class deriving

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

画布上绘制的圆圈与屏幕不匹配

我想在屏幕中心画圆圈,但我得到的是这样的东西:

在此输入图像描述

我正在使用此代码绘制此圆圈.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();
    int height = display.getHeight();

    Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);

    Canvas c = new Canvas(bmp);

    RectF rect = new RectF(0,0,width,width);
    drawCircle(rect, c, width, height);
    ImageView img = (ImageView) findViewById(R.id.imageView1);
    img.setImageBitmap(bmp);
    img.setScaleType(ScaleType.FIT_CENTER);


}

private void drawCircle(RectF rect, Canvas c, int width, int height) {
    Paint paint = new Paint();
    paint.setARGB(255, 255 , 10, 21);
    paint.setStrokeWidth(10);
    paint.setAntiAlias(true);
    paint.setStrokeCap(Paint.Cap.BUTT);
    paint.setStyle(Paint.Style.STROKE);
    int radius;
    if(width < height)
        radius …
Run Code Online (Sandbox Code Playgroud)

graphics android canvas

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

继续得到"SQLiteException:no such table"异常

我试图创建SQLiteDatabase来保存我从JSONObject获取的数据来自post请求.我的主要课程:

public class MainActivity extends Activity {

    static JSONObject result;
    public Context mContext;
    public SQLiteDatabase db;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mContext = getApplicationContext();
       new UpdateData().execute();


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    private class UpdateData extends AsyncTask<String, Void, JSONObject>{

        private JSONObject object;
            @Override
            protected JSONObject doInBackground(String... params) {
                try {
                    HttpClient client = new DefaultHttpClient();  
                    String postURL = "http://test.com";
                    HttpPost post = new HttpPost(postURL);
                        List<NameValuePair> crc = new ArrayList<NameValuePair>();
                        crc.add(new BasicNameValuePair("crc", …
Run Code Online (Sandbox Code Playgroud)

java android exception android-sqlite

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

我不知道的类型对象列表C#

我在设计我的函数时遇到问题,因此它可以针对不同类型采取不同的行为.我的函数用于创建具有不同类型的对象列表,因此创建几个类似的函数不会有问题,但如果可能的话我想避免它让我的代码变短:

static const int FIRST_TYPE = 0;
static const int SECOND_TYPE = 1;
static const int THIRD_TYPE = 2;
Run Code Online (Sandbox Code Playgroud)

我使用那些ints作为函数的参数:

public void foo(int type)
{
    List<TypeIDontYetKnow> deserialized; 
    switch (type)
    {
        case FIRST_TYPE:
            deserialized = new List<A>();
            break;
        case SECOND_TYPE:
            deserialized = new List<B>();
            break;
        case THIRD_TYPE:
            deserialized = new List<C>();
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能实现这样的目标?

c#

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

如何使用Django ModelForm将数据提交到数据库?

我正在学习一些Django,现在我在使用Forms时遇到了困难.我想要做的是创建一个表单,让人们在页面上留下消息,这些消息将显示在同一页面中(就像博客评论系统一样).我按照文档创建了一个类和ModelForm

class Recado(models.Model):
    recado = models.TextField()
    data = models.DateTimeField(auto_now_add=True)
    nome = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)

    def __unicode__(self):
        return self.recado

class RecadoForm(ModelForm):
    class Meta:
        model = Recado
        exclude = ('data',)
Run Code Online (Sandbox Code Playgroud)

那么这是我的看法:

def index(request):
    RecadoForm = modelform_factory(Recado, exclude=('data'))
    form = RecadoForm()
    lista_recados = Recado.objects.order_by('-data')
    template = loader.get_template('recados/index.html')
    context = Context({'lista_recados': lista_recados,})
    return render_to_response("recados/index.html", { "form": form,}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

和模板:

<div class="conteudo-site conteudo-recados">
    <form method="post" action="salvar_recado">
        {% csrf_token %}            
        {{ form.as_p }}
        <br /><input class="button" type="submit" value="Deixar Recado" />
    </form>
    {% if lista_recados %} …
Run Code Online (Sandbox Code Playgroud)

python django

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