标题:请教: CLR中List<String^>^ 使用问题
只看楼主
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
结帖率:97.22%
 问题点数:0 回复次数:2 
请教: CLR中List<String^>^ 使用问题
删除List<String^>^中重复的元素。。。。

自己折腾了俩天,删除List<String^>^中重复的元素,功能实际了。语法却不理解了。。。。

程序代码:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    {
        String^ str1 = "00\r\n99\r\n11\r\n88\r\n22\r\n77\r\n33\r\n66\r\n44\r\n55\r\n55\r\n44\r\n66\r\n33\r\n77\r\n22\r\n88\r\n11\r\n99\r\n00";
        array<String^>^ arrstr = Regex::Split(str1, "\r\n");
        List<String^>^ liststr = gcnew List<String^>((Generic::IEnumerable<String^>^)arrstr);
        for each(auto i in liststr)
            textBox1->Text += i + "\r\n";
        textBox1->Text += "\r\n";
        for (short i = 0; i < liststr->Count; i++)
        {
            String^ Samples = liststr[i];
            for (short j = liststr->Count - 1; j > 0; j--)
                if (ReferenceEquals(Samples, liststr[j]))
                    liststr->RemoveAt(j);
        }
        for each(auto i in liststr)
            textBox1->Text += i + "\r\n";        
    }



功能实现了,但问题???
for (short i = 0; i < liststr->Count; i++)
        {
            String^ Samples = liststr[i];
            for (short j = liststr->Count - 1; j > 0; j--)
                if (ReferenceEquals(Samples, liststr[j]))
                    liststr->RemoveAt(j);
        }
for (short j = liststr->Count - 1; j > 0; j--)
为什么不是
for (short j = liststr->Count - 1; j > i; j--)
按照我的理解
for (short j = liststr->Count - 1; j > 0; j--)
liststr最后只能剩下"00"一个元素。





如果使用
for (short j = liststr->Count - 1; j > i; j--)
结果没有删除任何一个元素。






第二个问题,如何初始化一个“空”List<String^>^ liststr;

如果使用:
List<String^>^ liststr;
liststr->Add("AABB");
就会报错,大概意思是内存中没有为liststr分配空间。。。。
我的方法:
 String^ str1 = "00\r\n11";
 array<String^>^ arrstr = Regex::Split(str1, "\r\n");
 List<String^>^ liststr = gcnew List<String^>((Generic::IEnumerable<String^>^)arrstr);
 liststr->Clear();
然后再进行添加
liststr->Add("AABB");
如何直接,初始化一个“空”List<String^>^ liststr。。。。

[此贴子已经被作者于2023-3-14 15:48编辑过]

搜索更多相关主题的帖子: short for List String Count 
2023-03-14 15:22
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
得分:0 
for (short i = 0; i < liststr->Count; i++)
        {
            String^ Samples = liststr[i];
            for (short j = liststr->Count - 1; j > 0; j--)
                if (ReferenceEquals(Samples, liststr[j]))
                    liststr->RemoveAt(j);
        }

当j=i 时,Samples = liststr[i]
liststr[i] 为什么没有被删除???


使用for (short j = liststr->Count - 1; j > i; j--)
为什么一个元素,也没删除。。。。
2023-03-14 15:43
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
得分:0 
删除List中重复的元素,有没有现成的方法(成员函数)。
2023-03-14 15:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511537-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112624 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved