小编web*_*rc2的帖子

C - Enum-Indexed Arrays的优点/缺点

根据我的经验,现实世界很少提供非负整数的索引.许多事情甚至没有用数字表示.许多带有数字表示索引的东西都不会将它们的索引开始为0.为什么我们仍然只限于整数索引数组呢?

也许我错了,但似乎枚举索引数组通常比数字索引数组更合适(因为枚举通常更准确,"真实世界"表示).虽然枚举通常可以相对轻松地转换为C风格的数组索引...

enum Weekday = {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

// hopefully C doesn't allow nonsequential enum values; else pray to God
// no one does something like setting Sunday = 4 and Saturday = 4096
int numberOfDays = Saturday-Sunday+1;

int hoursWorkedPerDay[numberOfDays];

hoursWorkedPerDay[(int)SUNDAY] = 0;
hoursWorkedPerDay[(int)MONDAY] = 8;
hoursWorkedPerDay[(int)TUESDAY] = 10;
hoursWorkedPerDay[(int)WEDNESDAY] = 6;
hoursWorkedPerDay[(int)THURSDAY] = 8;
hoursWorkedPerDay[(int)FRIDAY] = 8;
hoursWorkedPerDay[(int)SATURDAY] = 0;
Run Code Online (Sandbox Code Playgroud)

...我们仍然需要保持枚举数和数组大小之间的一致性(但是,这不是一个糟糕的解决方案,因为"SUNDAY"没有比0更有效的整数映射,更重要的是,任何可以强制转换为int的东西仍然可以放入索引来操作数组:

// continued from above
void resetHours (void) {
    int i = 0; …
Run Code Online (Sandbox Code Playgroud)

c c++ arrays indexing enums

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

FileStream WriteAsync并等待混淆

我正在研究C#中的新关键字asyncawait关键字,并试图感受它们.

我正在看MSDN FileStream.WriteAsync() 示例,我不确定我理解了什么.

示例如下:

using System;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.IO;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            UnicodeEncoding uniencoding = new UnicodeEncoding();
            string filename = @"c:\Users\exampleuser\Documents\userinputlog.txt";

            byte[] result = uniencoding.GetBytes(UserInput.Text);

            using (FileStream SourceStream = File.Open(filename, FileMode.OpenOrCreate))
            {
                SourceStream.Seek(0, SeekOrigin.End);
                await SourceStream.WriteAsync(result, 0, result.Length);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有得到的是放置await.您似乎无法获取Task返回的项目, …

.net c# filestream async-await

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

模型-视图-控制器 - 哪个组件传统上处理文件 I/O?

在传统的 MVC 应用程序中,哪个组件(模型、视图或控制器)负责从磁盘读取/写入模型?

model-view-controller file-io design-patterns

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

将枚举转换为二进制(通过整数或类似的东西)

我有一个带有2个值的Ada枚举type Polarity is (Normal, Reversed),我想将它们分别转换为0,1(或者True,False - 因为布尔值似乎隐含地表现为二进制),所以我可以将它们的值存储为特定的位.字节.我怎么能做到这一点?

binary enums ada

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

使用dict.fromkeys()禁用自动dict排序?

def parse_urls(weeks_urls):
    for wkey in weeks_urls.keys():
        results=urllib2.urlopen(weeks_urls[wkey])
        lines = list(csv.reader(results))
        lines=clean_lines(lines)
        week_dict=dict.fromkeys(lines[i][1] for i in range(len(lines)))
        fare_data=list((lines[i][1:]) for i in range(3,len(lines)))
        fare_data=get_fare_data(fare_data)
        n=3
        for station in week_dict: .....
.......
Run Code Online (Sandbox Code Playgroud)

当我用来dict.fromkeys( )从字符串列表中生成一个字典时,它会自动对它们进行排序,从而按字母顺序生成一个带字符串的字典.我需要保留字符串的原始顺序.有没有办法做到这一点?

感谢这里的任何帮助

谢谢!

python dictionary data-analysis

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

在Go方法中通过值传递"this"会有性能损失吗?

经过9年的C++开发,我正在探索Go.在C++中,由于性能损失,除了内置类型的变量之外,通过值传递函数的参数是一种不好的做法:参数的所有字段都将被复制,并且在大多数情况下,这将是一个非常昂贵的操作.

对Go来说这是真的吗?通过值传递"this"仅仅为方法分配"const"语义看起来非常昂贵.Go编译器是否足够智能以防止在第一次修改之前复制变量?为什么不通过值将"this"传递给Go中的反模式,就像在C/C++中一样?

c++ go

5
推荐指数
4
解决办法
784
查看次数

Ada String to Enumeration Conversion

我想将一个现有的字符串转换为枚举(不作为枚举读取).我怎样才能做到这一点?

string enums ada

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

在struct中声明的新受保护成员

C#编译器抱怨包含以下代码new protected member declared in struct.问题是什么?

struct Foo {
    protected Object _bar;
}
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
2
解决办法
3497
查看次数

无限循环findSuccessor?

我目前正在处理Chord协议.

对于每个节点有两个功能,findSuccessor并且closestPrecedingNode其中给定为伪代码.

findSuccessor 是:

n.findSuccessor(id)
  if(id is.in (n, successor])
    return successor;
  else
    n' = closestPrecedingNode(id);
    return n'.findSuccessor(id);
Run Code Online (Sandbox Code Playgroud)

closestPrecedingNode 是:

n.closestPrecedingNode(id)
  for i = m downto 1
    if(finger[i] is.in (n, id))
      return finger[i];
  return n;
Run Code Online (Sandbox Code Playgroud)

创建节点时,其后继节点最初设置为节点本身,其指针表为空.

现在我的问题是当只有一个节点时会发生什么,并且除了它自己的id之外,还要求任何 id.然后findSuccessor运行else块并调用closestPrecedingNode.由于finger表是空的,因此返回节点本身findSuccessor.因此n'等于n.

之后,findSuccessor被调用n',这是对自身的递归调用.

然后我们有一个无限循环...或者我错过了什么?

注意:伪代码取自Chord:用于Internet应用程序的可扩展对等查找协议,第5页.

p2p protocols chord

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

在Aptana自动完成

我正在使用Aptana studio 3进行网络编程.我也使用jQuery来达到同样的目的.问题在于Aptana中的自动完成功能.比如我得到这个:

$('div').click(function() {
     ${0:
\}}); 
Run Code Online (Sandbox Code Playgroud)

而不是这个:

$('div').click(function() {

});  
Run Code Online (Sandbox Code Playgroud)

也许有一些方法可以改变它(其他jquery aoutocomplete选项也是如此).谢谢!

javascript aptana eclipse ide jquery

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