小编Ani*_*Ani的帖子

boost::container::small_vector 似乎没有就地分配

为了测试我对 的理解small_vector,我尝试了下面的示例程序,其中我使用 3 的就地大小对向量进行模板化,并用 10 个元素填充向量。我希望前 3 个元素就地存储,而后 7 个元素在自由存储中就地存储,但当我观察内存布局时,情况似乎并非如此:所有的项目似乎都是连续和不合适地存储的,就像一个常规的std::vector.

我尝试了各种编译器(不同版本的 GCC 和 Clang)和不同的 Boost 版本,但这似乎没什么区别。以下代码也不会更改:

  • 在自由商店上分配向量本身。
  • vec前后用大型locals包围local,然后才加载元素。

对此有什么好的解释吗?

#include <iostream>
#include <boost/container/small_vector.hpp>

int main()
{
    auto vec = boost::container::small_vector<int, 3> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };  

    for (const auto& num : vec)
    {
        std::cout <<
            "Index: " << num <<
            " Distance from vec[0]: " << (long)&num - (long)&vec[0] <<
            " Distance from vec: " << (long)&num …
Run Code Online (Sandbox Code Playgroud)

c++ memory boost vector heap-memory

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

如何将 linq 选择器转换为预测器

我有一个 lambda 选择器,可以说Func<T, TResult>. 是否可以Func<T, bool>使用TResult对象作为参考将其转换为预测器 ( ) ?

例如,转换

x => x.Name
Run Code Online (Sandbox Code Playgroud)

进入

x => x.Name == customerName
Run Code Online (Sandbox Code Playgroud)

c# generics lambda delegates

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

如何创建动态数量的对象?设计模式的帮助

我陷入了一个正在开发的C#程序中,我认为这是因为我采取了错误的方法.

你看,我在XML文件中有这些设置,这些设置在运行时读取.对于每个设置,我想创建一个新东西.

我想我可以做到,但问题是,我如何引用这些对象?

例如:

  <person>
    <name>Jared</name>
    <age>28</age>
  </person>
  <person>
    <name>Nicole</name>
    <age>32</age>
  </person>
Run Code Online (Sandbox Code Playgroud)

通常情况下,我会做的事情如下:

Person Jared = new Person();
Run Code Online (Sandbox Code Playgroud)

但我不知道XML文件中会有多少人.然后如果我想设置/获得Jared的年龄,我将不知道如何引用它.

我错过了如何使用OOP动态创建对象?

-Josh

.net c# xml design-patterns

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

C#:我如何将const覆盖从C++转换为C#

我需要从C++转换为C#的代码行:

void GetAnalysisModeName( ON_wString& name ) const;
Run Code Online (Sandbox Code Playgroud)

我尝试过:

public override void GetAnalysisModeName(string name){}
Run Code Online (Sandbox Code Playgroud)

但它告诉我返回类型必须是一个字符串.

c# c++

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

C#确定字符串数组中的任何元素是否包含任何位置的给定字符串

我有一个字符串数组:

string[] Animals = {"Cat", "Dog", "Fish"};
Run Code Online (Sandbox Code Playgroud)

然后我想确定哪个元素包含序列"is"并返回整个元素; 在这种情况下"鱼"

如果我想找到"gh",它在列表中不存在,所以它应该返回第一个元素,在本例中为"Cat"

我试过这个linq代码,但我不认为我正在做lambda部分.

int index = Animals.Where(x => x.IndexOf("is") >= 0).First().IndexOf("is")
string result = index > 0 ? Animals[index] : Animals[0];
Run Code Online (Sandbox Code Playgroud)

此代码抛出此错误:

Exception Details: System.ArgumentNullException: Value cannot be null.
Parameter name: value
Run Code Online (Sandbox Code Playgroud)

我想我很亲近,我似乎无法得到它.

这种方法显然不是万无一失的,它应该返回可能有问题的"是"的第一个实例.我的潜在列表相当小,索引词总是唯一的.

c# linq arrays string

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

如何将const参数传递给C#中的抽象类父类?

我写了以下多态代码:

public abstract class  A  
{  
    readonly int x;  
    A(int i_MyInt)  
    {  
        x = i_MyInt;  
    }  
}  

public abstract class B : A  
{  
    //holds few integers and some methods      
}  


// concrete  object class  
public class C : B   
{  
   // holds some variables and mathods  
    C(int MyInt)  
    {   
      // here i would like to initialize A's x  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

我如何从C初始化A的x我尝试将参数传递给A的C'tor - 但是没有工作..

请帮忙,在此先感谢Amitos80

.net c# parameters class abstract

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

这是反模式吗?

我经常看到这样的代码:

public abstract class AbstractDataReader
{
    public void Read()
    {
        var reader = new StreamReader(FileName);
        ........
    }

    protected abstract string FileName
    {
        get;
    }
}

public class DataReader : AbstractDataReader
{
    protected override string FileName
    {
        get { return "data.txt"; }
    }
}
Run Code Online (Sandbox Code Playgroud)

至于我它接缝作为反模式,因为DataReader类没有逻辑,我不能AbstractDataReader没有继承它,我也必须继承该类只是为了指定参数而且我工作得慢,然后只是把它放在那里也很奇怪参数通过构造函数.

但我找不到这种反模式的名称.

有人知道吗?

c# inheritance design-patterns anti-patterns

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

将for循环转换为linq查询

我喜欢把自己认为对LINQ很好,但我时不时地尝试完成一些我无法工作的东西.我想将a转换SPListItemCollection为字典,这样我就可以使用键来查找值,而不需要每次都需要LINQ查询:

var formsConfigItems = new Dictionary<string, string>();
foreach (SPListItem item in list.GetItems(query))
    formsConfigItems.Add(item.Title, (item["Value"] == null ? string.Empty : item["Value"].ToString()));
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我希望使用LINQ以更干净的方式做到这一点.(这不是什么大不了的事,但我喜欢尽可能使用LINQ over for循环,尽管它在幕后是同样的事情.

我试着这样做:

var formsConfigItems = (from SPListItem i in list.GetItems(query)
                        select new { i.Title, i["Value"].ToString() }).ToDictionary<string, string>(k=>k.Key, k=>k.Value);
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.如果我尝试使用lambda表达式list.GetItems(query),我没有给出使用.Where或任何LINQ命令的选项(这很奇怪,因为它是一个SPListCollection)

提前致谢.

.net c# linq

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

输入强制转换错误和构造函数

我有两节课

 public class A
    {
        public A()
        {

        }
    }

    public class B:A
    {
        public B()
        {

        }
    }
Run Code Online (Sandbox Code Playgroud)

它的主要代码如下

    A oa = new B();
    B ob = new A();
Run Code Online (Sandbox Code Playgroud)

第1行成功编译,而第2行显示类型转换错误.为什么会这样.什么时候new B()new A()被召唤到底发生了什么?

.net c# casting static-typing

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

无法为泛型类创建属性

public class Address
{
    public string streetno;
    public string streetname;
    public string suburb;
    public string postcode;
    public Country country;
}
public class Country
{
    public string name;
}

public class Person<A>
    where A : new()
{
    public A address;

    public Person()
    {
        address.country = new Country();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译上面的代码时,我得到以下错误:错误CS1061:'A'不包含'country'的定义,并且没有扩展方法'country'接受类型'A'的第一个参数可以找到(你错过了吗?) using指令或程序集引用?)

关于如何解决这个问题的任何想法?

c# generics

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

布尔值上的Lambda表达式

对于bool值比较,lambda表达式的正确语法是什么?

下面的示例显示了rsp.InputOutput哪个是bool值.但是,当我尝试执行此操作时,我收到编译器错误.我知道它的东西很小,任何帮助赞赏.

在这个例子中,我想选择InputOutput值为的所有规则集参数true.

validRuleSetParameters.SelectMany(rsp => rsp.InputOutput == true)
Run Code Online (Sandbox Code Playgroud)

谢谢Niall

c# linq lambda boolean

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

使用LINQ进行SQL查询

请以LINQ格式帮助SQL Query - C#.NET 3.5

select distinct location, country from Customer where   Customer_Code ='1001';
Run Code Online (Sandbox Code Playgroud)

这是Query没有问题.在SQL中正常工作.但是当我在LINQ格式的ASP.NET代码中使用下面的LinQ查询时出错.请帮助一样.

编辑:

在ASP.NET代码中,

    var Query2 =  ds.Tables[0].AsEnumerable()
                 .Where(p => p.Field<string>("Customer_Code") == "1001")
                 .Select(p => new {p.Field<string>("Location"),p.Field<string>("Country")});
Run Code Online (Sandbox Code Playgroud)

错误:

错误:无效的匿名类型成员声明符.必须使用成员分配,简单名称或成员访问声明匿名类型成员.

请帮助!!!

c# linq asp.net .net-3.5

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

这是什么最好的解决方案?(任何语言)

这是一个问题.有人能找到答案吗?

允许最多两个"if"测试!

Given numbers from 1 to 100
If this number is divisble by 21 print "foobar"
If this number is divisble by 7 print "bar"
If this number is divisble by 3 print "foo"
If none of the above, print the number
Run Code Online (Sandbox Code Playgroud)

只打印一个数字.例如,数字21应该只打印"foobar",而不是所有"foobar","bar","foo".

可以用任何语言完成.

非常感谢.

language-agnostic algorithm fizzbuzz

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