如果我有一个类似的结构
struct account {
int account_number;
};
Run Code Online (Sandbox Code Playgroud)
然后做什么有什么区别
myAccount.account_number;
Run Code Online (Sandbox Code Playgroud)
和
myAccount->account_number;
Run Code Online (Sandbox Code Playgroud)
或者没有区别?
如果没有区别,你为什么不用这个.
符号而不是->
?->
看起来很乱.
如果我有
vector<T> list
Run Code Online (Sandbox Code Playgroud)
如果列表中的每个元素都是唯一的,那么删除元素的最简单方法是什么,只要我不知道它是否在列表中?我不知道元素的索引,我不在乎它是否在列表中.
如果我有一个像这样的结构
std::map<string, int> myMap;
myMap["banana"] = 1;
myMap["apple"] = 1;
myMap["orange"] = 1;
Run Code Online (Sandbox Code Playgroud)
如何访问myMap [0]?
我知道地图在内部进行排序,我对此很好,我希望通过索引在地图中获取值.我试过myMap [0]但是我得到了错误:
Error 1 error C2679: binary '[' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
Run Code Online (Sandbox Code Playgroud)
我意识到我可以这样做:
string getKeyAtIndex (int index){
map<string, int>::const_iterator end = myMap.end();
int counter = 0;
for (map<string, int>::const_iterator it = myMap.begin(); it != end; ++it) {
counter++;
if (counter == index)
return it->first;
}
}
Run Code Online (Sandbox Code Playgroud)
但这肯定是非常低效的?有没有更好的办法?
我有一个中断处理程序,运行速度不够快,我想做的事情.基本上我用它来生成正弦波,通过从AVR微控制器上的查找表输出值到PORT,但不幸的是,这种情况发生的速度不足以让我获得我想要的波的频率.有人告诉我,我应该考虑在汇编中实现它,因为编译器生成的汇编可能效率稍低,并且可以进行优化,但在查看汇编代码后,我真的看不到我能做什么更好.
这是C代码:
const uint8_t amplitudes60[60] = {127, 140, 153, 166, 176, 191, 202, 212, 221, 230, 237, 243, 248, 251, 253, 254, 253, 251, 248, 243, 237, 230, 221, 212, 202, 191, 179, 166, 153, 140, 127, 114, 101, 88, 75, 63, 52, 42, 33, 24, 17, 11, 6, 3, 1, 0, 1, 3, 6, 11, 17, 24, 33, 42, 52, 63, 75, 88, 101, 114};
const uint8_t amplitudes13[13] = {127, 176, 221, 248, 202, 153, 101, 52, 17, 1, …
Run Code Online (Sandbox Code Playgroud) 首先,我将说明这是一项大学任务,所以我不是要求别人为我编写代码,我只需要指向正确的方向.:)
好的,所以我需要编写一个算法来解决任意大小的任何(可解决的)数独板.我已经编写了一个递归功能,可以快速解决任何9x9电路板(约1ms),但是当我做大型电路板(16x16)很难解决时,它会挣扎......我已经进行了一次20分钟的测试,它可以'似乎解决了它.它可以解决简单的16x16谜题甚至是一个空白的16x16板,所以我不认为这是问题的维度..它更可能是我认为的问题算法.
无论如何,这是我的程序的基本逻辑..
然后我的解决功能基本上是:
bool solve() {
if (there are no unfilled squares)
return true
if (the board is unsolvable - there are empty squares that have no possible values)
return false
while (there are empty squares)
{
int squaresFilled = fillSquaresWithOnlyOneChoice(); //this method updates the possible results vector whenever it fills a square
if (squaresFilled == 0)
break;
}
//exhausted all of the 'easy' squares (squares with only one possible choice), need to make a guess
while …
Run Code Online (Sandbox Code Playgroud) 我正在用C语言编写一个微控制器,并且它的一部分想在7段显示器上显示某些字母.每个字母都有一个相应的数字,使7段显示显示字母.它没有真正的模式,因为数字只是通过将7段显示上的位加起来显示字母所以如果我可以创建某种字典来实现这一点真的很好.
如果我正在使用C#或其他东西,我只需要制作一个字典,然后将字母作为键和数字添加为值,但据我所知,我不能在C中执行此操作.是否有其他方法可以执行此操作或执行此操作我应该只编写一个函数int displayletter(char letter)
来使用一堆if语句来返回正确的数字吗?
我的任务是为一个作业创建一个简单的拼写检查器,但是旁边没有任何指导,所以想知道是否有人可以帮助我.我不是在跟别人为我做任务,但算法的任何方向或帮助都会很棒!如果我要求的不在网站的guildlines内,那么我很抱歉,我会在其他地方看看.:)
该项目加载正确拼写的小写单词,然后需要根据两个标准制作拼写建议:
一个字母的差异(加上或减去以使单词与字典中的单词相同).例如,'stack'将是'staick'的建议,'cool'将是'coo'的建议.
一个字母替换.因此,例如,'坏'将是'bod'的建议.
所以,只是为了确保我已经正确解释了......我可能会加载[你好,再见,太棒了,好,上帝]的话,然后对(错误拼写的)'godd'这个词的建议就是[好,上帝] ].
速度是我在这里的主要考虑因素,所以当我认为我知道一种方法来完成这项工作时,我真的不太确定它的效率.我正在考虑这样做的方法是创建一个map<string, vector<string>>
然后为每个正确拼写的单词加载,将正确拼写的作品添加为地图中的键,并将向量填充为所有可能的"错误"排列那个词.
然后,当我想查找一个单词时,我会查看地图中的每个向量,看看该单词是否是正确拼写单词之一的排列.如果是,我将添加密钥作为拼写建议.
这似乎会占用内存的HEAPS,因为每个单词肯定会有成千上万的排列?如果我的正确拼写单词的初始字典很大,它似乎也会非常慢?
我在想,也许我可以通过查看与我正在看的单词类似的键来缩短时间.但话说回来,如果它们在某种程度上相似,那么它可能意味着关键将是一个建议意味着我不需要所有这些排列!
所以,是的,我有点难过我应该看哪个方向.我真的很感激任何帮助,因为我真的不知道如何估计不同做事方式的速度(我们还没有教过这个在课堂上).
只是想知道我是否在VHDL中实现有限状态机是否需要说明所有输出在每种可能的状态?即使我知道某些输出不会从一个状态改变到另一个状态,我知道状态的顺序也会是相同的顺序吗?
例如,在此(强制)示例中:
entity test is
port (
clk : in std_logic;
a : in std_logic;
b: out std_logic;
c: out std_logic;
);
end test;
architecture Behavioral of test is
type executionStage is (s1,s2,s3);
signal currentstate, nextstate: executionStage;
begin
process (clk)
begin
if(rising_edge(clk)) then
currentstate <= nextstate;
else
currentstate <= currentstate;
end if;
end process;
process(currentstate)
begin
case currentstate is
when s1 =>
if (a = '1') then
b <= '1';
c <= '0';
else
b <= '1';
c …
Run Code Online (Sandbox Code Playgroud) 如果我想从命令行读取任意长度的字符串,那么最好的方法是什么?
目前我正在这样做:
char name_buffer [ 80 ];
int chars_read = 0;
while ( ( chars_read < 80 ) && ( !feof( stdin ) ) ) {
name_buffer [ chars_read ] = fgetc ( stdin );
chars_read++;
}
Run Code Online (Sandbox Code Playgroud)
但是如果字符串超过80个字符,我该怎么办?显然我可以将数组初始化为更大的数字,但我确信必须有更好的方法使用malloc或其他东西为数组提供更多空间?
任何提示都会很棒.
比方说,我有一个C源文件,其方法就像foo(a)
在哪里a
是一个字符.
我想打印foo
每个角色的输出是否比通过系统地进入p foo('a')
然后输入更容易p foo('b')
?
理想情况下,我真的很喜欢编写脚本,所以它更快一点.