为了测试我对 的理解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) 我有一个 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#程序中,我认为这是因为我采取了错误的方法.
你看,我在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
我需要从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)
但它告诉我返回类型必须是一个字符串.
我有一个字符串数组:
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)
我想我很亲近,我似乎无法得到它.
这种方法显然不是万无一失的,它应该返回可能有问题的"是"的第一个实例.我的潜在列表相当小,索引词总是唯一的.
我写了以下多态代码:
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
我经常看到这样的代码:
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没有继承它,我也必须继承该类只是为了指定参数而且我工作得慢,然后只是把它放在那里也很奇怪参数通过构造函数.
但我找不到这种反模式的名称.
有人知道吗?
我喜欢把自己认为对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)
提前致谢.
我有两节课
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()被召唤到底发生了什么?
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指令或程序集引用?)
关于如何解决这个问题的任何想法?
对于bool值比较,lambda表达式的正确语法是什么?
下面的示例显示了rsp.InputOutput哪个是bool值.但是,当我尝试执行此操作时,我收到编译器错误.我知道它的东西很小,任何帮助赞赏.
在这个例子中,我想选择InputOutput值为的所有规则集参数true.
validRuleSetParameters.SelectMany(rsp => rsp.InputOutput == true)
Run Code Online (Sandbox Code Playgroud)
谢谢Niall
请以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)
错误:
错误:无效的匿名类型成员声明符.必须使用成员分配,简单名称或成员访问声明匿名类型成员.
请帮助!!!
这是一个问题.有人能找到答案吗?
允许最多两个"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".
可以用任何语言完成.
非常感谢.